Hide some functions from rl.app.

This commit is contained in:
the-djmaze 2022-02-07 17:27:25 +01:00
parent ab149b5ec9
commit 1f0af5c0ac
7 changed files with 57 additions and 64 deletions

View file

@ -49,8 +49,6 @@ import { PgpUserStore } from 'Stores/User/Pgp';
import { MessageUserStore } from 'Stores/User/Message'; import { MessageUserStore } from 'Stores/User/Message';
import { ThemeStore } from 'Stores/Theme'; import { ThemeStore } from 'Stores/Theme';
import * as Local from 'Storage/Client';
import Remote from 'Remote/User/Fetch'; import Remote from 'Remote/User/Fetch';
import { EmailModel } from 'Model/Email'; import { EmailModel } from 'Model/Email';
@ -74,12 +72,12 @@ import { timeToNode } from 'Common/Momentor';
// Every 5 minutes // Every 5 minutes
const refreshFolders = 300000; const refreshFolders = 300000;
let moveCache = {};
class AppUser extends AbstractApp { class AppUser extends AbstractApp {
constructor() { constructor() {
super(Remote); super(Remote);
this.moveCache = {};
this.moveOrDeleteResponseHelper = this.moveOrDeleteResponseHelper.bind(this); this.moveOrDeleteResponseHelper = this.moveOrDeleteResponseHelper.bind(this);
this.messagesMoveTrigger = this.messagesMoveTrigger.debounce(500); this.messagesMoveTrigger = this.messagesMoveTrigger.debounce(500);
@ -108,14 +106,6 @@ class AppUser extends AbstractApp {
(Settings.app('inIframe') ? parent : window).location.reload(); (Settings.app('inIframe') ? parent : window).location.reload();
} }
reloadFlagsCurrentMessageListAndMessageFromCache() {
MessageUserStore.list.forEach(message =>
MessageFlagsCache.initMessage(message)
);
MessageFlagsCache.initMessage(MessageUserStore.message());
MessageUserStore.messageViewTrigger(!MessageUserStore.messageViewTrigger());
}
/** /**
* @param {boolean=} bDropPagePosition = false * @param {boolean=} bDropPagePosition = false
* @param {boolean=} bDropCurrenFolderCache = false * @param {boolean=} bDropCurrenFolderCache = false
@ -172,7 +162,7 @@ class AppUser extends AbstractApp {
const sTrashFolder = FolderUserStore.trashFolder(), const sTrashFolder = FolderUserStore.trashFolder(),
sSpamFolder = FolderUserStore.spamFolder(); sSpamFolder = FolderUserStore.spamFolder();
forEachObjectValue(this.moveCache, item => { forEachObjectValue(moveCache, item => {
const isSpam = sSpamFolder === item.To, const isSpam = sSpamFolder === item.To,
isTrash = sTrashFolder === item.To, isTrash = sTrashFolder === item.To,
isHam = !isSpam && sSpamFolder === item.From && getFolderInboxName() === item.To; isHam = !isSpam && sSpamFolder === item.From && getFolderInboxName() === item.To;
@ -192,31 +182,23 @@ class AppUser extends AbstractApp {
); );
}); });
this.moveCache = {}; moveCache = {};
} }
messagesMoveHelper(fromFolderFullName, toFolderFullName, uidsForMove) { messagesMoveHelper(fromFolderFullName, toFolderFullName, uidsForMove) {
const hash = '$$' + fromFolderFullName + '$$' + toFolderFullName + '$$'; const hash = '$$' + fromFolderFullName + '$$' + toFolderFullName + '$$';
if (!this.moveCache[hash]) { if (!moveCache[hash]) {
this.moveCache[hash] = { moveCache[hash] = {
From: fromFolderFullName, From: fromFolderFullName,
To: toFolderFullName, To: toFolderFullName,
Uid: [] Uid: []
}; };
} }
this.moveCache[hash].Uid = this.moveCache[hash].Uid.concat(uidsForMove).unique(); moveCache[hash].Uid = moveCache[hash].Uid.concat(uidsForMove).unique();
this.messagesMoveTrigger(); this.messagesMoveTrigger();
} }
messagesCopyHelper(sFromFolderFullName, sToFolderFullName, aUidForCopy) {
Remote.request('MessageCopy', null, {
FromFolder: sFromFolderFullName,
ToFolder: sToFolderFullName,
Uids: aUidForCopy.join(',')
});
}
messagesDeleteHelper(sFromFolderFullName, aUidForRemove) { messagesDeleteHelper(sFromFolderFullName, aUidForRemove) {
Remote.request('MessageDelete', Remote.request('MessageDelete',
this.moveOrDeleteResponseHelper, this.moveOrDeleteResponseHelper,
@ -244,15 +226,6 @@ class AppUser extends AbstractApp {
} }
} }
/**
* @param {string} sFromFolderFullName
* @param {Array} aUidForRemove
*/
deleteMessagesFromFolderWithoutCheck(sFromFolderFullName, aUidForRemove) {
this.messagesDeleteHelper(sFromFolderFullName, aUidForRemove);
MessageUserStore.removeMessagesFromList(sFromFolderFullName, aUidForRemove);
}
/** /**
* @param {number} iDeleteType * @param {number} iDeleteType
* @param {string} sFromFolderFullName * @param {string} sFromFolderFullName
@ -327,7 +300,11 @@ class AppUser extends AbstractApp {
if (oFromFolder && oToFolder) { if (oFromFolder && oToFolder) {
if (undefined === bCopy ? false : !!bCopy) { if (undefined === bCopy ? false : !!bCopy) {
this.messagesCopyHelper(oFromFolder.fullName, oToFolder.fullName, aUidForMove); Remote.request('MessageCopy', null, {
FromFolder: oFromFolder.fullName,
ToFolder: oToFolder.fullName,
Uids: aUidForMove.join(',')
});
} else { } else {
this.messagesMoveHelper(oFromFolder.fullName, oToFolder.fullName, aUidForMove); this.messagesMoveHelper(oFromFolder.fullName, oToFolder.fullName, aUidForMove);
} }
@ -424,7 +401,7 @@ class AppUser extends AbstractApp {
MessageFlagsCache.setFor(folderFromCache.fullName, message.Uid.toString(), message.Flags) MessageFlagsCache.setFor(folderFromCache.fullName, message.Uid.toString(), message.Flags)
); );
this.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
} }
MessageUserStore.initUidNextAndNewMessages( MessageUserStore.initUidNextAndNewMessages(
@ -549,7 +526,7 @@ class AppUser extends AbstractApp {
// no default // no default
} }
this.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
} }
} }
@ -569,26 +546,6 @@ class AppUser extends AbstractApp {
}, query); }, query);
} }
/**
* @param {string} sFullName
* @param {boolean} bExpanded
*/
setExpandedFolder(sFullName, bExpanded) {
let aExpandedList = Local.get(ClientSideKeyName.ExpandedFolders);
if (!isArray(aExpandedList)) {
aExpandedList = [];
}
if (bExpanded) {
if (!aExpandedList.includes(sFullName))
aExpandedList.push(sFullName);
} else {
aExpandedList = aExpandedList.filter(value => value !== sFullName);
}
Local.set(ClientSideKeyName.ExpandedFolders, aExpandedList);
}
/** /**
* @param {string} link * @param {string} link
* @returns {boolean} * @returns {boolean}

View file

@ -18,6 +18,8 @@ import { AbstractFetchRemote } from 'Remote/AbstractFetch';
import { FolderCollectionModel } from 'Model/FolderCollection'; import { FolderCollectionModel } from 'Model/FolderCollection';
import { MessageUserStore } from 'Stores/User/Message';
class RemoteUserFetch extends AbstractFetchRemote { class RemoteUserFetch extends AbstractFetchRemote {
/** /**
@ -130,7 +132,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
UidNext: getFolderUidNext(folder) // Used to check for new messages UidNext: getFolderUidNext(folder) // Used to check for new messages
}); });
} else if (SettingsUserStore.useThreads()) { } else if (SettingsUserStore.useThreads()) {
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
} }
} }

View file

@ -477,6 +477,12 @@ export const MessageUserStore = new class {
); );
} }
reloadFlagsAndCachedMessage() {
this.list.forEach(message => MessageFlagsCache.initMessage(message));
MessageFlagsCache.initMessage(this.message());
this.messageViewTrigger(!this.messageViewTrigger());
}
setMessageList(data, cached) { setMessageList(data, cached) {
const collection = MessageCollectionModel.reviveFromJson(data.Result, cached); const collection = MessageCollectionModel.reviveFromJson(data.Result, cached);
if (collection) { if (collection) {

View file

@ -484,7 +484,7 @@ class ComposePopupView extends AbstractViewPopup {
if (isArray(flagsCache)) { if (isArray(flagsCache)) {
flagsCache.push(('forward' === this.aDraftInfo[0]) ? '$forwarded' : '\\answered'); flagsCache.push(('forward' === this.aDraftInfo[0]) ? '$forwarded' : '\\answered');
MessageFlagsCache.setFor(this.aDraftInfo[2], this.aDraftInfo[1], flagsCache); MessageFlagsCache.setFor(this.aDraftInfo[2], this.aDraftInfo[1], flagsCache);
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
setFolderHash(this.aDraftInfo[2], ''); setFolderHash(this.aDraftInfo[2], '');
} }
} }
@ -592,7 +592,11 @@ class ComposePopupView extends AbstractViewPopup {
i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'),
() => { () => {
if (this.modalVisibility()) { if (this.modalVisibility()) {
rl.app.deleteMessagesFromFolderWithoutCheck(this.draftsFolder(), [this.draftUid()]); const
sFromFolderFullName = this.draftsFolder(),
aUidForRemove = [this.draftUid()];
rl.app.messagesDeleteHelper(sFromFolderFullName, aUidForRemove);
MessageUserStore.removeMessagesFromList(sFromFolderFullName, aUidForRemove);
this.closeCommand(); this.closeCommand();
} }
} }

View file

@ -18,6 +18,30 @@ import { showMessageComposer } from 'Common/UtilsUser';
import { FolderCreatePopupView } from 'View/Popup/FolderCreate'; import { FolderCreatePopupView } from 'View/Popup/FolderCreate';
import { ContactsPopupView } from 'View/Popup/Contacts'; import { ContactsPopupView } from 'View/Popup/Contacts';
import { isArray } from 'Common/Utils';
import { ClientSideKeyName } from 'Common/EnumsUser';
import * as Local from 'Storage/Client';
/**
* @param {string} sFullName
* @param {boolean} bExpanded
*/
function setExpandedFolder(sFullName, bExpanded) {
let aExpandedList = Local.get(ClientSideKeyName.ExpandedFolders);
if (!isArray(aExpandedList)) {
aExpandedList = [];
}
if (bExpanded) {
if (!aExpandedList.includes(sFullName))
aExpandedList.push(sFullName);
} else {
aExpandedList = aExpandedList.filter(value => value !== sFullName);
}
Local.set(ClientSideKeyName.ExpandedFolders, aExpandedList);
}
export class MailFolderList extends AbstractViewLeft { export class MailFolderList extends AbstractViewLeft {
constructor() { constructor() {
super('MailFolderList'); super('MailFolderList');
@ -69,7 +93,7 @@ export class MailFolderList extends AbstractViewLeft {
const folder = ko.dataFor(el); const folder = ko.dataFor(el);
if (folder) { if (folder) {
const collapsed = folder.collapsed(); const collapsed = folder.collapsed();
rl.app.setExpandedFolder(folder.fullName, collapsed); setExpandedFolder(folder.fullName, collapsed);
folder.collapsed(!collapsed); folder.collapsed(!collapsed);
event.preventDefault(); event.preventDefault();
@ -151,7 +175,7 @@ export class MailFolderList extends AbstractViewLeft {
folder = item && ko.dataFor(item); folder = item && ko.dataFor(item);
if (folder) { if (folder) {
const collapsed = folder.collapsed(); const collapsed = folder.collapsed();
rl.app.setExpandedFolder(folder.fullName, collapsed); setExpandedFolder(folder.fullName, collapsed);
folder.collapsed(!collapsed); folder.collapsed(!collapsed);
} }

View file

@ -488,7 +488,7 @@ export class MailMessageList extends AbstractViewRight {
Remote.messageSetSeenToAll(sFolderFullName, true, iThreadUid ? uids : null); Remote.messageSetSeenToAll(sFolderFullName, true, iThreadUid ? uids : null);
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
} }
} }
} }

View file

@ -621,7 +621,7 @@ export class MailMessageView extends AbstractViewRight {
MessageFlagsCache.store(oMessage); MessageFlagsCache.store(oMessage);
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache(); MessageUserStore.reloadFlagsAndCachedMessage();
} }
} }