JSON/Markdown-Export via Share Intent (ViewModel + UI) #37

Closed
opened 2026-05-14 00:57:14 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-14 00:57:14 +00:00 (Migrated from github.com)

Feature: JSON/Markdown-Export via Share Intent

Part of: #9
Depends on: #36 (Markdown-Export Repository-Methode)

Ziel

Nach Abschluss kann der User ueber die Einstellungen-Seite sein Inventar als JSON oder Markdown exportieren. Der Export oeffnet das Android Share Sheet (Teilen-Dialog) oder speichert in eine Datei.

Scope

  • SettingsViewModel erweitern: exportJson() und exportMarkdown() Methoden
  • SettingsUiState erweitern: Export-Events (ShareContent sealed class)
  • SettingsScreen: Export-Buttons mit Share Intent Launcher
  • Android Share Intent: Intent.ACTION_SEND mit text/plain (Markdown) bzw. application/json (JSON)
  • Fuer grosse JSON-Dateien: FileProvider + temporaere Datei im Cache
  • Fehlerbehandlung + Fortschrittsanzeige (bei grossen Inventaren)

Technische Hinweise

  • Bestehende Buttons in SettingsScreen.kt (Zeile 114-140) sind Platzhalter mit Toast
  • ImportExportRepository.exportToJson() und (neu) exportToMarkdown() vorhanden
  • Pattern fuer Events: Sealed class im UiState + LaunchedEffect fuer einmalige Aktionen
  • FileProvider muss in AndroidManifest registriert werden
  • Share Intent Pattern: Intent(Intent.ACTION_SEND).apply { type = "application/json"; putExtra(Intent.EXTRA_STREAM, uri) }

Akzeptanzkriterien

  • Button "Daten exportieren (JSON)" oeffnet Share Sheet mit JSON-Inhalt
  • Button "Als Markdown teilen" oeffnet Share Sheet mit Markdown-Text
  • Bei leerer Datenbank: JSON mit leeren Arrays, Markdown mit Hinweis "Keine Artikel vorhanden"
  • FileProvider ist korrekt konfiguriert (kein FileUriExposedException)
  • Unit-Tests: ViewModel-Export-Logik
## Feature: JSON/Markdown-Export via Share Intent Part of: #9 Depends on: #36 (Markdown-Export Repository-Methode) ### Ziel Nach Abschluss kann der User ueber die Einstellungen-Seite sein Inventar als JSON oder Markdown exportieren. Der Export oeffnet das Android Share Sheet (Teilen-Dialog) oder speichert in eine Datei. ### Scope - SettingsViewModel erweitern: `exportJson()` und `exportMarkdown()` Methoden - SettingsUiState erweitern: Export-Events (ShareContent sealed class) - SettingsScreen: Export-Buttons mit Share Intent Launcher - Android Share Intent: `Intent.ACTION_SEND` mit text/plain (Markdown) bzw. application/json (JSON) - Fuer grosse JSON-Dateien: FileProvider + temporaere Datei im Cache - Fehlerbehandlung + Fortschrittsanzeige (bei grossen Inventaren) ### Technische Hinweise - Bestehende Buttons in `SettingsScreen.kt` (Zeile 114-140) sind Platzhalter mit Toast - `ImportExportRepository.exportToJson()` und (neu) `exportToMarkdown()` vorhanden - Pattern fuer Events: Sealed class im UiState + `LaunchedEffect` fuer einmalige Aktionen - FileProvider muss in AndroidManifest registriert werden - Share Intent Pattern: `Intent(Intent.ACTION_SEND).apply { type = "application/json"; putExtra(Intent.EXTRA_STREAM, uri) }` ### Akzeptanzkriterien - [ ] Button "Daten exportieren (JSON)" oeffnet Share Sheet mit JSON-Inhalt - [ ] Button "Als Markdown teilen" oeffnet Share Sheet mit Markdown-Text - [ ] Bei leerer Datenbank: JSON mit leeren Arrays, Markdown mit Hinweis "Keine Artikel vorhanden" - [ ] FileProvider ist korrekt konfiguriert (kein FileUriExposedException) - [ ] Unit-Tests: ViewModel-Export-Logik
jreinemann-euris commented 2026-05-14 01:26:42 +00:00 (Migrated from github.com)

Abgeschlossen (2025-05-14)

Zyklen: 1
Tests: 165 Tests, 0 Fehler (14 in SettingsViewModelTest, davon 8 neu)

Implementierte Artefakte

  • ShareContent sealed interface: Export-Event-Typen (Json mit Uri, Markdown mit Text)
  • SettingsUiState: isExporting, shareContent, exportError Felder
  • SettingsViewModel: exportJson() via FileProvider, exportMarkdown() via EXTRA_TEXT
  • SettingsScreen: LaunchedEffect + Intent.createChooser fuer Share Sheet
  • FileProvider: AndroidManifest + file_paths.xml konfiguriert
  • MockK: als Test-Dependency hinzugefuegt
  • Unit-Tests: Export-Erfolg, Fehlerbehandlung, State-Cleanup
## Abgeschlossen (2025-05-14) **Zyklen:** 1 **Tests:** ✅ 165 Tests, 0 Fehler (14 in SettingsViewModelTest, davon 8 neu) ### Implementierte Artefakte - ✅ ShareContent sealed interface: Export-Event-Typen (Json mit Uri, Markdown mit Text) - ✅ SettingsUiState: isExporting, shareContent, exportError Felder - ✅ SettingsViewModel: exportJson() via FileProvider, exportMarkdown() via EXTRA_TEXT - ✅ SettingsScreen: LaunchedEffect + Intent.createChooser fuer Share Sheet - ✅ FileProvider: AndroidManifest + file_paths.xml konfiguriert - ✅ MockK: als Test-Dependency hinzugefuegt - ✅ Unit-Tests: Export-Erfolg, Fehlerbehandlung, State-Cleanup
Sign in to join this conversation.
No description provided.