feat: live IMAP sync on folder select + 60s auto-sync interval

- New imap_sync_folder function: syncs single folder quickly for live use
- New POST /mail/folders/{folder_id}/sync route
- Frontend: syncFolder API + called on every folder selection
- Auto-sync interval reduced from 300s to 60s
- Sent mail IMAP APPEND already uploads full body via msg.as_bytes()
This commit is contained in:
Agent Zero
2026-07-20 12:01:16 +02:00
parent c24a86bc90
commit 3313047577
5 changed files with 259 additions and 3 deletions
+8 -2
View File
@@ -35,6 +35,7 @@ import {
saveDraft,
updateDraft,
triggerSync,
syncFolder,
type MailAccount,
type MailFolder,
type Mail,
@@ -168,7 +169,7 @@ export function MailPage() {
loadMails();
}, [loadMails]);
// Handle folder selection — derive account from folder
// Handle folder selection — derive account from folder + trigger live IMAP sync
const handleSelectFolder = useCallback(
(folderId: string) => {
setSelectedFolderId(folderId);
@@ -181,8 +182,13 @@ export function MailPage() {
setSelectedMail(null);
setSelectedMailIds(new Set());
setActiveView('list');
// Live sync: fetch new mails from IMAP server immediately
syncFolder(folderId).then(() => {
loadMails();
loadAllFolders();
}).catch(() => {});
},
[folders],
[folders, loadMails, loadAllFolders],
);
// Handle mail selection