feat(mobile): IMAP Basic UI — MS2 (#108) #130

Merged
admin-mrrm merged 2 commits from feat/imap-mobile-ui into main 2026-04-27 09:35:43 +02:00
Owner

Summary

  • MailResource im api-client: alle 7 Endpunkte mit Zod-Validation (#105–#107)
  • MailApiProvider + useMailApi() Hook (analog zu ListsApiClientProvider)
  • TanStack Query Hooks: useMailAccounts, useMailFolders, useMailMessages, useMailMessage, useCreate/DeleteMailAccount
  • Konto-Übersicht (/mail): Liste, Löschen, "+ Konto" Button
  • Account-Setup (/mail/new-account): Formular mit Verbindungstest im Backend
  • Ordner-Liste (/mail/:id/folders): live vom IMAP-Server
  • Posteingang (/mail/:id/messages): Pull-to-refresh, Absender/Betreff/Datum, Unread-Marker
  • Mail-Leseansicht (/mail/:id/reader): Headers + bodyText, HTML-Stripping als Fallback
  • Drawer-Navigation: Mail-Eintrag ergänzt

Schließt MS2 (#108).

Test plan

  • Konto anlegen → Verbindungstest schlägt fehl → 422 mit Fehlermeldung
  • Konto anlegen → Erfolg → erscheint in Liste
  • Konto antippen → Ordner-Liste erscheint
  • INBOX antippen → Nachrichten-Liste mit Pull-to-refresh
  • Nachricht antippen → Leseansicht mit Betreff, Von, An, Datum, Body
  • Konto löschen → verschwindet aus Liste

🤖 Generated with Claude Code

## Summary - **MailResource** im api-client: alle 7 Endpunkte mit Zod-Validation (#105–#107) - **MailApiProvider** + `useMailApi()` Hook (analog zu ListsApiClientProvider) - **TanStack Query Hooks**: useMailAccounts, useMailFolders, useMailMessages, useMailMessage, useCreate/DeleteMailAccount - **Konto-Übersicht** (`/mail`): Liste, Löschen, "+ Konto" Button - **Account-Setup** (`/mail/new-account`): Formular mit Verbindungstest im Backend - **Ordner-Liste** (`/mail/:id/folders`): live vom IMAP-Server - **Posteingang** (`/mail/:id/messages`): Pull-to-refresh, Absender/Betreff/Datum, Unread-Marker - **Mail-Leseansicht** (`/mail/:id/reader`): Headers + bodyText, HTML-Stripping als Fallback - **Drawer-Navigation**: Mail-Eintrag ergänzt Schließt MS2 (#108). ## Test plan - [ ] Konto anlegen → Verbindungstest schlägt fehl → 422 mit Fehlermeldung - [ ] Konto anlegen → Erfolg → erscheint in Liste - [ ] Konto antippen → Ordner-Liste erscheint - [ ] INBOX antippen → Nachrichten-Liste mit Pull-to-refresh - [ ] Nachricht antippen → Leseansicht mit Betreff, Von, An, Datum, Body - [ ] Konto löschen → verschwindet aus Liste 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(mobile): IMAP Basic UI — MS2 (#108)
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
f7d901002e
api-client:
- MailResource: listAccounts, createAccount, deleteAccount, testConnection,
  listFolders, listMessages, getMessage mit Zod-Schemas

mobile:
- MailApiProvider + useMailApi-Hook (analog zu ListsApiClientProvider)
- TanStack Query Hooks: useMailAccounts, useMailFolders, useMailMessages,
  useMailMessage, useCreateMailAccount, useDeleteMailAccount
- (drawer)/mail.tsx: Konto-Übersicht mit Löschen-Button
- mail/new-account.tsx: Account-Setup-Form (Label, Host, Port, TLS, User, PW)
- mail/[accountId]/folders.tsx: Ordner-Liste
- mail/[accountId]/messages.tsx: Posteingang mit Pull-to-refresh, Unread-Marker
- mail/[accountId]/reader.tsx: Mail-Leseansicht (text/plain + HTML-Stripping)
- Drawer-Navigation: Mail-Eintrag ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge branch 'main' into feat/imap-mobile-ui
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
f84317e7ba
admin-mrrm deleted branch feat/imap-mobile-ui 2026-04-27 09:35:43 +02:00
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!130
No description provided.