1 parent
065fc87306
commit
1b12899ff6
8 files changed
+38
-13
No files matched your search
@@ -662,6 +662,19 @@ async function resyncRealtimeState() {
|
||||
return state.realtimeSyncPromise;
|
||||
}
|
||||
|
||||
async function refreshOpenThread() {
|
||||
const current = state.currentDetail;
|
||||
if (!current) return;
|
||||
const folder = current.folder;
|
||||
const uid = current.uid;
|
||||
try {
|
||||
const fresh = await request(`/messages/${encodeURIComponent(folder)}/${uid}`, { method: "GET" });
|
||||
if (!state.currentDetail || state.currentDetail.folder !== folder || Number(state.currentDetail.uid) !== Number(uid)) return;
|
||||
state.currentDetail.thread = fresh.thread || [];
|
||||
renderThread(state.currentDetail);
|
||||
} catch (_) { }
|
||||
}
|
||||
|
||||
function scheduleRealtimeRefresh(event, accountId) {
|
||||
if (accountId !== state.accountId) return;
|
||||
state.realtimeRefreshEvents.push(event);
|
||||
@@ -669,6 +682,7 @@ function scheduleRealtimeRefresh(event, accountId) {
|
||||
state.realtimeRefreshTimer = setTimeout(async () => {
|
||||
const events = state.realtimeRefreshEvents.splice(0);
|
||||
const folderTreeChanged = events.some((item) => item.type === "FolderUpdated");
|
||||
const hasNewMessages = events.some((item) => item.type === "NewMessages");
|
||||
const newInCurrent = events.some((item) => item.type === "NewMessages" && item.data?.folder === state.folder);
|
||||
const structuralFlagsInCurrent = events.some((item) => item.type === "FlagsChanged" && item.data?.folder === state.folder && !(item.data?.changes || []).length);
|
||||
const tasks = [];
|
||||
@@ -678,6 +692,7 @@ function scheduleRealtimeRefresh(event, accountId) {
|
||||
else tasks.push(loadMessages(true, { background: true }));
|
||||
}
|
||||
if (tasks.length) await Promise.all(tasks);
|
||||
if (hasNewMessages && state.currentDetail) await refreshOpenThread();
|
||||
}, 80);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user