Benutzereinstellungen: E-Mail-Signatur wird nicht angezeigt. #1

Closed
opened 2026-05-21 13:22:50 +00:00 by bjoernpoettker · 1 comment
Owner

Wenn ich in die Benutzereinstellungen gehe, wird die E-Mail-Signatur nicht angezeigt, obwohl eine gespeichert ist und mir in der verarbeitenden Ansicht beim E-Mail-Senden angezeigt wird.

Wenn ich in die Benutzereinstellungen gehe, wird die E-Mail-Signatur nicht angezeigt, obwohl eine gespeichert ist und mir in der verarbeitenden Ansicht beim E-Mail-Senden angezeigt wird.
Author
Owner

Ursache

Race Condition zwischen API-Aufruf und TipTap-Initialisierung.

In MailSettingsTab (UserSettingsPage.tsx) lädt ein useEffect beim Mount sofort die Einstellungen per API. Gleichzeitig rendert WysiwygEditor solange null, bis TipTap fertig initialisiert ist (if (!editor) return null). Da setLoading(false) erst im .finally()-Block ausgeführt wird, wurde editorRef.current?.setContent() im .then()-Block aufgerufen – zu einem Zeitpunkt, an dem der Editor noch gar nicht gemountet war. Der Aufruf scheiterte lautlos via ?..

Im E-Mail-Dialog (InboxDetailPage) tritt das Problem nicht auf, weil der Editor dort erst bei einer Benutzeraktion (Modal öffnen) eingeblendet wird und TipTap bis dahin bereits initialisiert ist.

Lösung

WysiwygEditor.tsx: Neue Prop initialContent?: string hinzugefügt. TipTap wird direkt mit dem übergebenen HTML-Inhalt initialisiert.

UserSettingsPage.tsx: Signatur wird nun in State gespeichert (setSignatureHtml) statt über den Ref gesetzt. Da die Komponente während des Ladens null zurückgibt, mountet der Editor erst nach Abschluss des API-Calls – und erhält die Signatur dann sauber als initialContent-Prop.

## Ursache Race Condition zwischen API-Aufruf und TipTap-Initialisierung. In `MailSettingsTab` (`UserSettingsPage.tsx`) lädt ein `useEffect` beim Mount sofort die Einstellungen per API. Gleichzeitig rendert `WysiwygEditor` solange `null`, bis TipTap fertig initialisiert ist (`if (!editor) return null`). Da `setLoading(false)` erst im `.finally()`-Block ausgeführt wird, wurde `editorRef.current?.setContent()` im `.then()`-Block aufgerufen – zu einem Zeitpunkt, an dem der Editor noch gar nicht gemountet war. Der Aufruf scheiterte lautlos via `?.`. Im E-Mail-Dialog (`InboxDetailPage`) tritt das Problem nicht auf, weil der Editor dort erst bei einer Benutzeraktion (Modal öffnen) eingeblendet wird und TipTap bis dahin bereits initialisiert ist. ## Lösung **`WysiwygEditor.tsx`:** Neue Prop `initialContent?: string` hinzugefügt. TipTap wird direkt mit dem übergebenen HTML-Inhalt initialisiert. **`UserSettingsPage.tsx`:** Signatur wird nun in State gespeichert (`setSignatureHtml`) statt über den Ref gesetzt. Da die Komponente während des Ladens `null` zurückgibt, mountet der Editor erst nach Abschluss des API-Calls – und erhält die Signatur dann sauber als `initialContent`-Prop.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bjoernpoettker/paperlessmanager#1