JSON-Import mit File Picker (SAF) #38

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

Feature: JSON-Import mit File Picker (SAF)

Part of: #9
Depends on: #37 (JSON/Markdown-Export via Share Intent)

Ziel

Nach Abschluss kann der User eine JSON-Backup-Datei ueber einen File Picker auswaehlen und seine Daten wiederherstellen (Restore/Datenuebernahme).

Scope

  • Storage Access Framework (SAF) File Picker Integration
  • SettingsViewModel erweitern: importFromFile(uri: Uri) Methode
  • SettingsUiState erweitern: Import-Status (Loading, Success, Error mit Meldung)
  • SettingsScreen: Import-Button oeffnet File Picker (ActivityResultContract)
  • Bestaetigungsdialog vor Import ("Bestehende Daten werden ueberschrieben")
  • Fehlerbehandlung: Ungueltige Datei, falsches Format, korrupte JSON

Technische Hinweise

  • Bestehender Placeholder-Button in SettingsScreen.kt (Zeile 130-140)
  • ImportExportRepository.importFromJson(json: String) ist bereits implementiert (transaktional)
  • File Picker via rememberLauncherForActivityResult(ActivityResultContracts.OpenDocument())
  • URI lesen via contentResolver.openInputStream(uri)?.bufferedReader()?.readText()
  • Context wird im Composable via LocalContext.current bereitgestellt

Akzeptanzkriterien

  • Button "Daten importieren" oeffnet System File Picker (nur .json Dateien)
  • Bestaetigungsdialog warnt vor Datenersetzung
  • Erfolgreicher Import zeigt Erfolgsmeldung
  • Fehlerhafter Import zeigt verstaendliche Fehlermeldung (kein Crash)
  • Bestehende Daten bleiben bei fehlerhaftem Import unveraendert (Transaktion)
  • Unit-Tests: ViewModel Import-Flow (Success + Error Pfade)
## Feature: JSON-Import mit File Picker (SAF) Part of: #9 Depends on: #37 (JSON/Markdown-Export via Share Intent) ### Ziel Nach Abschluss kann der User eine JSON-Backup-Datei ueber einen File Picker auswaehlen und seine Daten wiederherstellen (Restore/Datenuebernahme). ### Scope - Storage Access Framework (SAF) File Picker Integration - SettingsViewModel erweitern: `importFromFile(uri: Uri)` Methode - SettingsUiState erweitern: Import-Status (Loading, Success, Error mit Meldung) - SettingsScreen: Import-Button oeffnet File Picker (ActivityResultContract) - Bestaetigungsdialog vor Import ("Bestehende Daten werden ueberschrieben") - Fehlerbehandlung: Ungueltige Datei, falsches Format, korrupte JSON ### Technische Hinweise - Bestehender Placeholder-Button in `SettingsScreen.kt` (Zeile 130-140) - `ImportExportRepository.importFromJson(json: String)` ist bereits implementiert (transaktional) - File Picker via `rememberLauncherForActivityResult(ActivityResultContracts.OpenDocument())` - URI lesen via `contentResolver.openInputStream(uri)?.bufferedReader()?.readText()` - Context wird im Composable via `LocalContext.current` bereitgestellt ### Akzeptanzkriterien - [ ] Button "Daten importieren" oeffnet System File Picker (nur .json Dateien) - [ ] Bestaetigungsdialog warnt vor Datenersetzung - [ ] Erfolgreicher Import zeigt Erfolgsmeldung - [ ] Fehlerhafter Import zeigt verstaendliche Fehlermeldung (kein Crash) - [ ] Bestehende Daten bleiben bei fehlerhaftem Import unveraendert (Transaktion) - [ ] Unit-Tests: ViewModel Import-Flow (Success + Error Pfade)
Sign in to join this conversation.
No description provided.