docs(PROJ-70): Implementation Notes für Frontend ergänzen
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
4b3a4ef996
commit
ba0c519b00
@@ -110,13 +110,31 @@ Mail- und IMAP-Handler dupliziert):
|
||||
Versuch (Erfolg und Fehlschlag) inkl. Mail-ID.
|
||||
- Kein Schreibzugriff auf `internal/imapserver` (Archiv-Server) — nur lesendes
|
||||
`storage.Load()` plus schreibender Client gegen das externe Postfach.
|
||||
- **Offen (Frontend, noch nicht umgesetzt):** Schieberegler + Passwort-Dialog für
|
||||
Opt-in, Restore-Button in `/mail/[id]`, Auswahl des Ziel-IMAP-Kontos falls
|
||||
mehrere hinterlegt sind. `GET /api/auth/me` liefert bereits `imap_restore_enabled`
|
||||
im Response (siehe `auth_handlers.go`), Frontend kann das für Sichtbarkeit nutzen.
|
||||
- Nicht lokal kompilierbar/testbar (kein Go-Toolchain lokal) — Verifikation von
|
||||
`go vet`/Kompilierung steht auf Test-Server (132) noch aus.
|
||||
|
||||
**Frontend (Commit 4b3a4ef):**
|
||||
|
||||
- `src/hooks/useImapRestore.ts` (neu): State-Hook für den Opt-in-Schalter —
|
||||
AN löst Passwort-Dialog aus, AUS deaktiviert direkt ohne Passwort; Regler
|
||||
springt bei Fehler (falsches Passwort, LDAP-Account) auf AUS zurück.
|
||||
- `src/components/settings/ImapRestoreSection.tsx` (neu): shadcn `Switch` +
|
||||
`Dialog` mit Passwortfeld, Loading/Error/Success-States. Eingebunden in
|
||||
`src/app/settings/page.tsx`, `onChanged` triggert `useAuth().refresh()`.
|
||||
- `src/components/mail/RestoreMailButton.tsx` (neu): Button "Zurück ins
|
||||
Postfach" in `src/app/mail/[id]/page.tsx` — nur sichtbar bei
|
||||
`imap_restore_enabled=true` und ≥1 IMAP-Konto; bei mehreren Konten `Select`
|
||||
zur Zielwahl; zeigt die 422-Klartextfehlermeldung vom Server per shadcn
|
||||
`Alert` (kein Toast-System im Repo vorhanden).
|
||||
- `src/lib/api/users.ts`: `MeResponse.imap_restore_enabled?: boolean`, neue
|
||||
`setImapRestore()`.
|
||||
- `src/lib/api/mail.ts`: `RestoreResult`-Interface + `restoreMail()` (eigener
|
||||
`fetch`, um das `error`-JSON-Feld als `Error.message` durchzureichen).
|
||||
- `npx tsc --noEmit -p .` lief sauber durch (Exit 0).
|
||||
|
||||
**Noch offen:** QA gegen Acceptance Criteria (insb. Tenant-Isolation-Test,
|
||||
Sichtbarkeits-Gating), Kompilierung/Deploy auf 132.
|
||||
|
||||
## QA Test Results
|
||||
_wird nach Umsetzung ergänzt._
|
||||
|
||||
|
||||
Reference in New Issue
Block a user