Skip to content

Formular speichern

app/composables/protocol/useFormSave.ts zentralisiert das Speicherverhalten auf Acceptance-Ebene, das von der Editor-Hülle und Top-Bar-Aktionen genutzt wird.

Öffentliche API

Das Composable stellt aktuell eine Methode bereit:

  • saveCurrentAcceptance(id, options?)

Rückgabeform:

  • success
  • state: saved | no_changes | offline | error
  • optional message
  • optional syncResult

Speicherverhalten

Offline

  • gibt { success: false, state: 'offline' } zurück
  • zeigt aktuell keinen Toast an

Vorhandene lokale Änderungen

  • ruft acceptanceStore.saveLocalToServer(id) auf
  • synchronisiert anschließend vorgemerkte Bild-Uploads, Bildmetadaten und Bildlöschungen über syncPendingUploads({ acceptanceId: id })
  • löst bei Erfolg app:sync-completed über nuxtApp.callHook(...) aus
  • kann einen Erfolgs-Toast anzeigen
  • gibt bei Fehler state: 'error' zurück und zeigt einen Fehler-Toast, sofern nicht unterdrückt

Nur Bildänderungen

Wenn keine Sektion dirty ist, aber Bilder oder Bildmetadaten der Acceptance pending sind:

  • überspringt saveCurrentAcceptance(...) den Entity-Store-Save
  • ruft trotzdem syncPendingUploads({ acceptanceId: id }) auf
  • gibt bei Erfolg state: 'saved' zurück
  • gibt bei Medienfehlern state: 'error' zurück, lässt die Pending-Bilder lokal retrybar und zeigt einen Warn-Toast, sofern Toasts nicht unterdrückt sind

Keine ausstehenden Änderungen

  • gibt { success: true, state: 'no_changes' } zurück
  • kann einen neutralen Hinweis-Toast für fehlende Änderungen anzeigen

Optionen

Unterstützte Optionen:

  • showToasts
  • suppressNoChangesToast
  • suppressSuccessToast
  • suppressOfflineToast
  • successToastTitle
  • successToastDuration

Verwendende Stellen

Im Anwendungscode verifizierte Verbraucher:

  • app/composables/protocol/useAcceptanceEditorPage.ts
  • app/composables/protocol/useCustomerViewNavigation.ts
  • app/components/Navigation/TopBars/TopBarMain.vue
  • app/components/Protocol/ProtocolCloneModal.vue
  • app/pages/customer-view/signatures.vue