meldestelle/docs/99_Journal/2026-04-20_Vereins_Verwaltung_Logo_Adresse.md

3.1 KiB

Journal-Eintrag: Vereins-Verwaltung Erweiterung (Logo & Adresse)

Datum: 20. April 2026 Status: Abgeschlossen (Bugfix & Feature-Integration) Beteiligte Agenten: 🏗️ [Lead Architect], 🎨 [Frontend Expert], 🧹 [Curator], 🧐 [QA Specialist]

📝 Zusammenfassung

Die Vereins-Verwaltung wurde um detaillierte Adressdaten und ein funktionales Logo-Management erweitert. Ein kritischer Bug, der zum Einfrieren der App beim Datei-Import führte, wurde behoben. Logos werden nun in der Vorschau korrekt gerendert.

🛠️ Technische Änderungen

0. Bugfix: Logo-Picker UI-Freeze

  • Problem: Der FileDialog (AWT) blockierte den Main-Thread, was zum Einfrieren der App führte.
  • Lösung: Auslagerung des Dialog-Aufrufs in einen asynchronen Dispatchers.IO Kontext in LogoUploadZone.jvm.kt.
  • Stabilität: Integration von Try-Catch Blöcken und detailliertem Logging für den Datei-Import-Prozess.

1. Feature: Logo-Rendering (Base64)

  • Implementation: Einführung einer expect/actual Funktion decodeBase64ToImage.
  • JVM-Logic: Nutzung von org.jetbrains.skia.Image zur Dekodierung der Base64-Bytes in eine ImageBitmap.
  • UI-Integration: Die VereinCardPreview rendert nun das Vereinslogo direkt aus dem gespeicherten Base64-String mittels androidx.compose.foundation.Image.

2. Domain-Modell (Verein.kt)

  • Erweiterung um Felder: strasse, hausnummer, bundesland (Enum).
  • Neues Feld logoBase64 für die Offline-Speicherung von optimierten Vereinslogos.
  • Einführung des Enums Bundesland mit den 9 österreichischen Bundesländern zur Sicherstellung der Datenqualität (ÖTO-konform).

2. ViewModel (VereinViewModel.kt)

  • Erweiterung des VereinUiState um die neuen Adress- und Logo-Felder.
  • Implementierung der Change-Handler für alle neuen Felder.
  • Anpassung der onSave- und onAddNew-Methoden zur Berücksichtigung der erweiterten Datenstruktur.

3. UI-Anpassungen (VereinScreens.kt)

  • Card-Preview:
    • Anzeige der vollständigen Adresse (Straße, Hausnummer, PLZ, Ort, Bundesland).
    • Integration eines "Maps"-Buttons, der die Adresse direkt in Google Maps öffnet (via LocalUriHandler).
    • Vergrößertes Logo-Display (80dp) mit modernem Design.
  • Editor:
    • Logische Gruppierung der Adressfelder (Straße/Nr. in einer Zeile, PLZ/Ort/Bundesland in der nächsten).
    • Einsatz des MsEnumDropdown für die Bundesland-Auswahl.
    • Vorbereitung einer "Logo-Upload-Zone" mit visuellem Feedback für Drag-and-Drop / FilePicker.

🔍 Verifikation

  • Bugfix: Datei-Dialog friert die UI nicht mehr ein (IO-Dispatcher).
  • Feature: Base64-Logo wird in der Card-Vorschau gerendert.
  • Feature: Logging im ViewModel und Logo-Service implementiert.
  • UI: Kompakte Adressfelder und Google-Maps-Link funktionieren.

📌 Nächste Schritte

  • Implementierung einer tatsächlichen Bild-Skalierung vor dem Base64-Encoding, um Datenbank-Größe zu optimieren.
  • Finalisierung der Drag-and-Drop Logik (onExternalDrag), sobald Bibliotheks-Support stabil ist.

Dokumentiert durch den Curator.