fix(mail): sync Object error, MIME subject decoding, sticky compact pagination

- Fix sync error: backend returns {synced, error?} not {success, synced_count}; frontend now checks error field
- Decode MIME encoded-words (=?UTF-8?Q?...?=) in backend during IMAP sync for subject/from/to/cc headers
- Add frontend decodeMimeHeader() utility for already-stored encoded subjects (MailList + MailDetail)
- Make pagination sticky at bottom of mail list (flex-col h-full, ul scrolls, pagination flex-shrink-0)
- Make pagination compact: smaller padding (px-1.5 py-0.5), text-xs, smaller icons, tighter spacing
This commit is contained in:
Agent Zero
2026-07-16 09:40:59 +02:00
parent 560e4ac69d
commit 2a80aeb0af
6 changed files with 92 additions and 39 deletions
+10 -5
View File
@@ -599,11 +599,16 @@ export function MailPage() {
if (!selectedAccountId) return;
setIsSyncing(true);
try {
await triggerSync(selectedAccountId);
await loadMails();
toast.success(t('mail.syncSuccess'));
} catch (err) {
toast.error(err instanceof Error ? err.message : String(err));
const result = await triggerSync(selectedAccountId);
if ((result as any)?.error) {
toast.error((result as any).error);
} else {
await loadMails();
toast.success(t('mail.syncSuccess'));
}
} catch (err: any) {
const msg = err?.message || err?.detail || (typeof err === 'string' ? err : 'Sync failed');
toast.error(msg);
} finally {
setIsSyncing(false);
}