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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user