feat(v1.8.0): IMPL_006 Sync Progress UI - Complete Implementation
- Add SyncProgress.kt: Data class for entire sync lifecycle UI state - Add SyncPhase enum: IDLE, PREPARING, UPLOADING, DOWNLOADING, IMPORTING_MARKDOWN, COMPLETED, ERROR - Rewrite SyncStateManager.kt: SyncProgress (StateFlow) is single source of truth - Remove pre-set phases: CHECKING_SERVER and SAVING cause flickering - UPLOADING phase only set when actual uploads happen - DOWNLOADING phase only set when actual downloads happen - IMPORTING_MARKDOWN phase only set when feature enabled - Add onProgress callback to uploadLocalNotes() with uploadedCount/totalToUpload - Add onProgress callback to downloadRemoteNotes() for actual downloads only - Progress display: x/y for uploads (known total), count for downloads (unknown) - Add SyncProgressBanner.kt: Unified banner (replaces dual system) - Update SyncStatusBanner.kt: Kept for legacy compatibility, only COMPLETED/ERROR - Update MainViewModel.kt: Remove _syncMessage, add syncProgress StateFlow - Update MainScreen.kt: Use only SyncProgressBanner (unified) - Update ComposeMainActivity.kt: Auto-hide COMPLETED (2s), ERROR (4s) via lifecycle - Add strings.xml (DE+EN): sync_phase_* and sync_wifi_only_error - Banner appears instantly on sync button click (PREPARING phase) - Silent auto-sync (onResume) completely silent, errors always shown - No misleading counters when nothing to sync Closes #IMPL_006
This commit is contained in:
@@ -76,6 +76,16 @@
|
||||
<!-- 🆕 v1.8.0 (IMPL_022): Sync-Banner Löschungsanzahl -->
|
||||
<string name="sync_deleted_on_server_count">%d auf Server gelöscht</string>
|
||||
|
||||
<!-- 🆕 v1.8.0 (IMPL_006): Sync-Phasen Strings -->
|
||||
<string name="sync_phase_preparing">Synchronisiere…</string>
|
||||
<string name="sync_phase_checking">Prüfe Server…</string>
|
||||
<string name="sync_phase_uploading">Hochladen…</string>
|
||||
<string name="sync_phase_downloading">Herunterladen…</string>
|
||||
<string name="sync_phase_importing_markdown">Markdown importieren…</string>
|
||||
<string name="sync_phase_saving">Speichern…</string>
|
||||
<string name="sync_phase_completed">Sync abgeschlossen</string>
|
||||
<string name="sync_phase_error">Sync fehlgeschlagen</string>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- DELETE DIALOGS -->
|
||||
<!-- ============================= -->
|
||||
@@ -242,6 +252,7 @@
|
||||
<string name="sync_section_advanced">⚙️ Erweitert</string>
|
||||
|
||||
<string name="sync_wifi_only_hint">💡 Der WiFi-Connect Trigger ist davon nicht betroffen \u2013 er synchronisiert immer wenn WiFi verbunden wird.</string>
|
||||
<string name="sync_wifi_only_error">Sync funktioniert nur wenn WLAN verbunden ist</string>
|
||||
|
||||
<string name="sync_trigger_on_save_title">Nach dem Speichern</string>
|
||||
<string name="sync_trigger_on_save_subtitle">Sync sofort nach jeder Änderung</string>
|
||||
|
||||
@@ -83,6 +83,16 @@
|
||||
<!-- 🆕 v1.8.0 (IMPL_022): Sync banner deletion count -->
|
||||
<string name="sync_deleted_on_server_count">%d deleted on server</string>
|
||||
|
||||
<!-- 🆕 v1.8.0 (IMPL_006): Sync phase strings -->
|
||||
<string name="sync_phase_preparing">Synchronizing…</string>
|
||||
<string name="sync_phase_checking">Checking server…</string>
|
||||
<string name="sync_phase_uploading">Uploading…</string>
|
||||
<string name="sync_phase_downloading">Downloading…</string>
|
||||
<string name="sync_phase_importing_markdown">Importing Markdown…</string>
|
||||
<string name="sync_phase_saving">Saving…</string>
|
||||
<string name="sync_phase_completed">Sync complete</string>
|
||||
<string name="sync_phase_error">Sync failed</string>
|
||||
|
||||
<!-- ============================= -->
|
||||
<!-- DELETE DIALOGS -->
|
||||
<!-- ============================= -->
|
||||
@@ -249,6 +259,7 @@
|
||||
<string name="sync_section_advanced">⚙️ Advanced</string>
|
||||
|
||||
<string name="sync_wifi_only_hint">💡 WiFi-Connect Trigger is not affected by this setting \u2013 it always syncs when WiFi is connected.</string>
|
||||
<string name="sync_wifi_only_error">Sync only works when WiFi is connected</string>
|
||||
|
||||
<string name="sync_trigger_on_save_title">After Saving</string>
|
||||
<string name="sync_trigger_on_save_subtitle">Sync immediately after each change</string>
|
||||
|
||||
Reference in New Issue
Block a user