feat(#285): Archive-Button im Mail-Detail (web + mobile) #314

Merged
admin-mrrm merged 1 commit from feat/285-archive-button into main 2026-05-16 16:05:55 +02:00
Owner

Closes #285

Was

  • MailResource.archiveMessage(accountId, folder, uid) im api-client → POST /mail/accounts/:id/folders/:folder/messages/:uid/archive
  • messageEnvelopeSchema erweitert um archived: boolean (matched neuen API-Indikator aus #279)
  • useArchiveMail(...) Hook für web + mobile mit Cache-Invalidierung der getMessage- und messages-Listen
  • MailReader (web + mobile):
    • Wenn archived === false → Button Archivieren löst Mutation aus, zeigt Erfolgs-Toast inkl. Paperless-Dokument-ID; bei alreadyArchived ein Hinweis-Toast
    • Wenn archived === true → disabled Button Archiviert ✓
    • Während Mutation Archiviere… und disabled

Tests

  • api: 333 tests green
  • web: 57 tests green
  • mobile: 49 tests green
  • typecheck web/mobile/api-client clean

Manuelles QA-Plan

  • Mail öffnen, auf Archivieren klicken → Toast erscheint, Button zeigt Archiviert ✓
  • Nach Reload: Indikator persistent (archived=true aus DB)
  • In der Liste wird die archivierte Mail wieder gefunden (archived-Flag in Envelope)
  • Zweiter Klick / erneuter Aufruf bleibt idempotent
Closes #285 ## Was - `MailResource.archiveMessage(accountId, folder, uid)` im api-client → `POST /mail/accounts/:id/folders/:folder/messages/:uid/archive` - `messageEnvelopeSchema` erweitert um `archived: boolean` (matched neuen API-Indikator aus #279) - `useArchiveMail(...)` Hook für web + mobile mit Cache-Invalidierung der getMessage- und messages-Listen - MailReader (web + mobile): - Wenn `archived === false` → Button **Archivieren** löst Mutation aus, zeigt Erfolgs-Toast inkl. Paperless-Dokument-ID; bei `alreadyArchived` ein Hinweis-Toast - Wenn `archived === true` → disabled Button **Archiviert ✓** - Während Mutation `Archiviere…` und disabled ## Tests - ✅ api: 333 tests green - ✅ web: 57 tests green - ✅ mobile: 49 tests green - typecheck web/mobile/api-client clean ## Manuelles QA-Plan - [ ] Mail öffnen, auf **Archivieren** klicken → Toast erscheint, Button zeigt **Archiviert ✓** - [ ] Nach Reload: Indikator persistent (archived=true aus DB) - [ ] In der Liste wird die archivierte Mail wieder gefunden (archived-Flag in Envelope) - [ ] Zweiter Klick / erneuter Aufruf bleibt idempotent
feat(#285): Archive-Button im Mail-Detail (web + mobile)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
a8821c2103
- api-client: archiveMessage() + archived-Flag in messageEnvelopeSchema
- web/mobile hooks: useArchiveMail() invalidiert message-Caches
- MailReader (web + mobile): Button "Archivieren" mit Erfolgs-Toast
  bzw. "Archiviert ✓" disabled wenn archived=true
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!314
No description provided.