E-Mail-Ansicht: Postfach-Filter in Trash/Sent durchreichen
Bug: Im Vertrags-Tab (Gesendet/Gelöscht) und im Kunden-Haupt-
Postfach (Gelöscht) wurden Mails aus ALLEN Postfächern angezeigt,
unabhängig vom ausgewählten Postfach. Im Vertrag fehlte zusätzlich
der Vertrags-Filter im Papierkorb.
Backend:
- getEmailsForContract akzeptiert accountId → stressfreiEmailId
- getTrashEmails (controller + service) nimmt {accountId, contractId}
- getFolderCountsForContract bekommt optional stressfreiEmailId und
zusätzlich trash/trashUnread im Result
Frontend:
- API-Client (getForContract/getTrash/getContractFolderCounts) nimmt
Filter entgegen
- ContractEmailsSection reicht selectedAccountId in alle drei Queries
+ queryKey durch. Trash-Badge kommt jetzt aus contract-scoped
Counts statt account-globalem stressfreiEmailApi
- EmailClientTab reicht selectedAccountId in die Trash-Query durch
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,34 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🐞 E-Mail-Ansicht: Postfach-Filter griff in Trash/Sent nicht**
|
||||
- Bug-Bericht 2026-06-21: im Vertrags-Tab (Gesendet/Gelöscht) und im
|
||||
Kunden-Haupt-Postfach (Gelöscht) wurden E-Mails aus ALLEN Postfächern
|
||||
des Kunden angezeigt, egal welches Postfach im Selector aktiv war.
|
||||
Im Vertrag fehlte zusätzlich der Vertrags-Filter für den Papierkorb.
|
||||
- Backend:
|
||||
- `getEmailsForContract` controller akzeptiert jetzt `accountId`-
|
||||
Query-Param und reicht ihn als `stressfreiEmailId` an
|
||||
`getCachedEmails` weiter (der hat den Filter eh schon implementiert,
|
||||
nur niemand hat ihn aufgerufen).
|
||||
- `getTrashEmails` (controller + service) akzeptiert `accountId` und
|
||||
`contractId` als optionale Filter. Default-Verhalten unverändert,
|
||||
wenn keiner gesetzt ist.
|
||||
- `getFolderCountsForContract` akzeptiert optional `stressfreiEmailId`,
|
||||
bekommt zusätzlich `trash` + `trashUnread` ins Result – sonst läge
|
||||
der Trash-Badge im Vertrag wieder account-global, während die Liste
|
||||
contract-scoped ist.
|
||||
- Frontend:
|
||||
- `cachedEmailApi.getForContract` / `getTrash` / `getContractFolderCounts`
|
||||
nehmen den Filter entgegen.
|
||||
- `ContractEmailsSection` reicht `selectedAccountId` in alle drei
|
||||
Queries durch und nimmt es in den queryKey mit auf – sonst greift
|
||||
der React-Query-Cache beim Postfach-Wechsel nicht. Der Trash-Badge
|
||||
kommt jetzt aus den contract-scoped Counts, damit Badge und Liste
|
||||
synchron laufen.
|
||||
- `EmailClientTab` reicht `selectedAccountId` in die Trash-Query
|
||||
durch (Inbox/Sent waren schon korrekt).
|
||||
|
||||
- [x] **🔒 Pentest R89 – Provider-Adressfelder härten**
|
||||
- R89.1 (MEDIUM): `sanitizeNotes(…, 500)` macht silent `slice(0, 500)`
|
||||
statt 400 – 501+ Zeichen wurden auf 500 abgeschnitten und mit
|
||||
|
||||
Reference in New Issue
Block a user