mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Hide some functions from rl.app.
This commit is contained in:
parent
ab149b5ec9
commit
1f0af5c0ac
7 changed files with 57 additions and 64 deletions
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -621,7 +621,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
|
|
||||||
MessageFlagsCache.store(oMessage);
|
MessageFlagsCache.store(oMessage);
|
||||||
|
|
||||||
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache();
|
MessageUserStore.reloadFlagsAndCachedMessage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue