Move folderInformation() function

This commit is contained in:
the-djmaze 2022-08-22 21:52:00 +02:00
parent 88222034e6
commit a18cc9a486
3 changed files with 61 additions and 54 deletions

View file

@ -24,7 +24,6 @@ import {
import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { UNUSED_OPTION_VALUE } from 'Common/Consts';
import { import {
MessageFlagsCache,
getFolderInboxName, getFolderInboxName,
getFolderFromCacheList getFolderFromCacheList
} from 'Common/Cache'; } from 'Common/Cache';
@ -60,11 +59,11 @@ import { FolderSystemPopupView } from 'View/Popup/FolderSystem';
import { AskPopupView } from 'View/Popup/Ask'; import { AskPopupView } from 'View/Popup/Ask';
import { import {
folderInformation,
folderInformationMultiply, folderInformationMultiply,
refreshFoldersInterval, refreshFoldersInterval,
messagesMoveHelper, messagesMoveHelper,
messagesDeleteHelper, messagesDeleteHelper
fetchFolderInformation
} from 'Common/Folders'; } from 'Common/Folders';
import { loadFolders } from 'Model/FolderCollection'; import { loadFolders } from 'Model/FolderCollection';
@ -216,51 +215,7 @@ export class AppUser extends AbstractApp {
* @param {Array=} list = [] * @param {Array=} list = []
*/ */
folderInformation(folder, list) { folderInformation(folder, list) {
if (folder && folder.trim()) { folderInformation(folder, list);
fetchFolderInformation(
(iError, data) => {
if (!iError && data.Result) {
const result = data.Result,
folderFromCache = getFolderFromCacheList(result.Folder);
if (folderFromCache) {
const oldHash = folderFromCache.hash,
unreadCountChange = (folderFromCache.unreadEmails() !== result.unreadEmails);
// folderFromCache.revivePropertiesFromJson(result);
folderFromCache.expires = Date.now();
folderFromCache.uidNext = result.UidNext;
folderFromCache.hash = result.Hash;
folderFromCache.totalEmails(result.totalEmails);
folderFromCache.unreadEmails(result.unreadEmails);
if (unreadCountChange) {
MessageFlagsCache.clearFolder(folderFromCache.fullName);
}
if (result.MessagesFlags.length) {
result.MessagesFlags.forEach(message =>
MessageFlagsCache.setFor(folderFromCache.fullName, message.Uid.toString(), message.Flags)
);
MessagelistUserStore.reloadFlagsAndCachedMessage();
}
MessagelistUserStore.notifyNewMessages(folderFromCache.fullName, result.NewMessages);
if (!oldHash || unreadCountChange || result.Hash !== oldHash) {
if (folderFromCache.fullName === FolderUserStore.currentFolderFullName()) {
MessagelistUserStore.reload();
} else if (getFolderInboxName() === folderFromCache.fullName) {
Remote.messageList(null, {Folder: getFolderInboxName()}, true);
}
}
}
}
},
folder,
list
);
}
} }
logout() { logout() {
@ -309,9 +264,9 @@ export class AppUser extends AbstractApp {
setInterval(() => { setInterval(() => {
const cF = FolderUserStore.currentFolderFullName(), const cF = FolderUserStore.currentFolderFullName(),
iF = getFolderInboxName(); iF = getFolderInboxName();
this.folderInformation(iF); folderInformation(iF);
if (iF !== cF) { if (iF !== cF) {
this.folderInformation(cF); folderInformation(cF);
} }
folderInformationMultiply(); folderInformationMultiply();
}, refreshFoldersInterval); }, refreshFoldersInterval);
@ -323,7 +278,7 @@ export class AppUser extends AbstractApp {
setTimeout(() => { setTimeout(() => {
const cF = FolderUserStore.currentFolderFullName(); const cF = FolderUserStore.currentFolderFullName();
if (getFolderInboxName() !== cF) { if (getFolderInboxName() !== cF) {
this.folderInformation(cF); folderInformation(cF);
} }
FolderUserStore.hasCapability('LIST-STATUS') || folderInformationMultiply(true); FolderUserStore.hasCapability('LIST-STATUS') || folderInformationMultiply(true);
}, 1000); }, 1000);

View file

@ -129,6 +129,58 @@ folderListOptionsBuilder = (
// Every 5 minutes // Every 5 minutes
refreshFoldersInterval = 300000, refreshFoldersInterval = 300000,
/**
* @param {string} folder
* @param {Array=} list = []
*/
folderInformation = (folder, list) => {
if (folder && folder.trim()) {
fetchFolderInformation(
(iError, data) => {
if (!iError && data.Result) {
const result = data.Result,
folderFromCache = getFolderFromCacheList(result.Folder);
if (folderFromCache) {
const oldHash = folderFromCache.hash,
unreadCountChange = (folderFromCache.unreadEmails() !== result.unreadEmails);
// folderFromCache.revivePropertiesFromJson(result);
folderFromCache.expires = Date.now();
folderFromCache.uidNext = result.UidNext;
folderFromCache.hash = result.Hash;
folderFromCache.totalEmails(result.totalEmails);
folderFromCache.unreadEmails(result.unreadEmails);
if (unreadCountChange) {
MessageFlagsCache.clearFolder(folderFromCache.fullName);
}
if (result.MessagesFlags.length) {
result.MessagesFlags.forEach(message =>
MessageFlagsCache.setFor(folderFromCache.fullName, message.Uid.toString(), message.Flags)
);
MessagelistUserStore.reloadFlagsAndCachedMessage();
}
MessagelistUserStore.notifyNewMessages(folderFromCache.fullName, result.NewMessages);
if (!oldHash || unreadCountChange || result.Hash !== oldHash) {
if (folderFromCache.fullName === FolderUserStore.currentFolderFullName()) {
MessagelistUserStore.reload();
} else if (getFolderInboxName() === folderFromCache.fullName) {
Remote.messageList(null, {Folder: getFolderInboxName()}, true);
}
}
}
}
},
folder,
list
);
}
},
/** /**
* @param {boolean=} boot = false * @param {boolean=} boot = false
*/ */
@ -162,7 +214,7 @@ folderInformationMultiply = (boot = false) => {
} else if (unreadCountChange } else if (unreadCountChange
&& folder.fullName === FolderUserStore.currentFolderFullName() && folder.fullName === FolderUserStore.currentFolderFullName()
&& MessagelistUserStore.length) { && MessagelistUserStore.length) {
rl.app.folderInformation(folder.fullName, MessagelistUserStore()); folderInformation(folder.fullName, MessagelistUserStore());
} }
} }
}); });

View file

@ -16,7 +16,7 @@ import { encodeHtml, HtmlEditor, htmlToPlain } from 'Common/Html';
import { koArrayWithDestroy } from 'External/ko'; import { koArrayWithDestroy } from 'External/ko';
import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { UNUSED_OPTION_VALUE } from 'Common/Consts';
import { messagesDeleteHelper } from 'Common/Folders'; import { folderInformation, messagesDeleteHelper } from 'Common/Folders';
import { serverRequest } from 'Common/Links'; import { serverRequest } from 'Common/Links';
import { i18n, getNotification, getUploadErrorDescByCode, timestampToString } from 'Common/Translator'; import { i18n, getNotification, getUploadErrorDescByCode, timestampToString } from 'Common/Translator';
import { MessageFlagsCache, setFolderHash } from 'Common/Cache'; import { MessageFlagsCache, setFolderHash } from 'Common/Cache';
@ -77,7 +77,7 @@ const
if (FolderUserStore.currentFolderFullName() === draftsFolder) { if (FolderUserStore.currentFolderFullName() === draftsFolder) {
MessagelistUserStore.reload(true); MessagelistUserStore.reload(true);
} else { } else {
rl.app.folderInformation(draftsFolder); folderInformation(draftsFolder);
} }
} }
}, },