Skip to content

Ungespeicherte Änderungen

app/composables/protocol/useUnsavedChanges.ts stellt eine kleine storeübergreifende Dirty-State-Zusammenfassung bereit, die in Navigation und Status-UI verwendet wird.

Aktueller Umfang

Das Composable prüft aktuell diese Quellen:

  • die aktuelle Acceptance-ID gegen acceptanceStore.unsyncedacceptances
  • acceptanceStore.hasUnsyncedChanges als bestehendes Acceptance-/Sync-Signal
  • pending Bild-Uploads, Bildmetadaten und Bildlöschungen der aktuellen Acceptance über usePendingImageChanges(...)
  • alle Stores aus app/stores/registry.ts, die eine reaktive $isDirty-Property bereitstellen

Der Bildzustand wird aus der Dexie-Tabelle images abgeleitet und über Dexie.liveQuery() reaktiv gehalten. Dadurch zählen reine Bildänderungen auch dann als ungespeichert, wenn keine Upload-Komponente mehr gemountet ist.

Neue registrierte Section-Stores müssen dadurch nicht mehr manuell in useUnsavedChanges.ts eingetragen werden. Voraussetzung ist, dass der Store in STORE_REGISTRY hängt und seine Dirty-State-Quelle über $isDirty verfügbar ist.

Rückgabewerte

hasUnsavedChanges

Boolean-Computed, das auf true springt, sobald einer der überwachten Stores dirty ist.

dirtyStores

String-Array-Computed für Anzeige oder Diagnose.

Mögliche Werte:

  • acceptance
  • images
  • Registry-Keys aus STORE_REGISTRY, z. B. meter, key, roomDetail, tenant_confirmation

Die Werte sind bewusst technische Store-/Registry-Keys. UI-Komponenten, die nutzerlesbare Labels brauchen, sollten diese Keys selbst übersetzen oder mappen.

Verwendende Stellen

Im Anwendungscode verifizierte Nutzung:

  • app/pages/customer-view.vue
  • app/components/Protocol/ProtocolCloneModal.vue
  • app/components/Navigation/TopBars/TopBarMain.vue
  • app/components/Sync/SyncStatus.vue