PersonEditModal: Endlos-Contact-API-Spam + Modal schliesst nicht nach Speichern #200

Closed
opened 2026-07-03 17:26:31 +02:00 by niboer · 0 comments
Owner

Beschreibung

Zwei Bugs im PersonEditModal (frontend/src/lib/components/person-edit-modal.svelte):

Bug 1: Endlos-Schleife der Contact-API-Aufrufe

Oeffnet man das "Person bearbeiten"-Popup, wird GET /api/v1/persons/{id}/contacts in einer Endlosschleife gefetcht. Der $effect-Block triggert sich selbst reaktiv: Sobald loadingContacts nach dem Fetch wieder false wird, erfuellt die Bedingung open && !loadingContacts erneut und startet den naechsten Request.

Betroffene Endpunkte: /api/v1/persons/{id}/contacts

Bug 2: Modal schliesst nicht nach Speichern

Nach erfolgreichem Speichern bleibt das Modal geoeffnet. Das use:enhance-Directive auf dem Formular hat keinen Callback, der das Ergebnis verarbeitet. Die Variable formSuccess wird nie auf true gesetzt, sodass selbst der Erfolgs-Text nie erscheint.

Fix

  • contactsFetched-Flag eingefuehrt, das nach erstmaligem Fetch auf true bleibt und den $effect-Guard bricht
  • use:enhance-Callback hinzugefuegt: result.type === 'success'onClose(), failureformError setzen
  • formSuccess entfernt (das Schliessen des Modals + aktualisierte Tabelle ist ausreichendes Feedback)

Labels

component/frontend, prio/high, type/bug

## Beschreibung Zwei Bugs im `PersonEditModal` (`frontend/src/lib/components/person-edit-modal.svelte`): ### Bug 1: Endlos-Schleife der Contact-API-Aufrufe Oeffnet man das "Person bearbeiten"-Popup, wird `GET /api/v1/persons/{id}/contacts` in einer Endlosschleife gefetcht. Der `$effect`-Block triggert sich selbst reaktiv: Sobald `loadingContacts` nach dem Fetch wieder `false` wird, erfuellt die Bedingung `open && !loadingContacts` erneut und startet den naechsten Request. **Betroffene Endpunkte:** `/api/v1/persons/{id}/contacts` ### Bug 2: Modal schliesst nicht nach Speichern Nach erfolgreichem Speichern bleibt das Modal geoeffnet. Das `use:enhance`-Directive auf dem Formular hat keinen Callback, der das Ergebnis verarbeitet. Die Variable `formSuccess` wird nie auf `true` gesetzt, sodass selbst der Erfolgs-Text nie erscheint. ## Fix - `contactsFetched`-Flag eingefuehrt, das nach erstmaligem Fetch auf `true` bleibt und den `$effect`-Guard bricht - `use:enhance`-Callback hinzugefuegt: `result.type === 'success'` → `onClose()`, `failure` → `formError` setzen - `formSuccess` entfernt (das Schliessen des Modals + aktualisierte Tabelle ist ausreichendes Feedback) ## Labels component/frontend, prio/high, type/bug
Sign in to join this conversation.
No description provided.