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.
|
Versuch (Erfolg und Fehlschlag) inkl. Mail-ID.
|
||||||
- Kein Schreibzugriff auf `internal/imapserver` (Archiv-Server) — nur lesendes
|
- Kein Schreibzugriff auf `internal/imapserver` (Archiv-Server) — nur lesendes
|
||||||
`storage.Load()` plus schreibender Client gegen das externe Postfach.
|
`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
|
- Nicht lokal kompilierbar/testbar (kein Go-Toolchain lokal) — Verifikation von
|
||||||
`go vet`/Kompilierung steht auf Test-Server (132) noch aus.
|
`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
|
## QA Test Results
|
||||||
_wird nach Umsetzung ergänzt._
|
_wird nach Umsetzung ergänzt._
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user