mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Prevent Circular dependencies
This commit is contained in:
parent
bb4ff4fdc7
commit
c270f0ad9a
10 changed files with 99 additions and 125 deletions
|
|
@ -61,7 +61,13 @@ import { ComposePopupView } from 'View/Popup/Compose';
|
|||
import { FolderSystemPopupView } from 'View/Popup/FolderSystem';
|
||||
import { AskPopupView } from 'View/Popup/Ask';
|
||||
|
||||
import { folderInformationMultiply, refreshFoldersInterval, messagesMoveHelper, messagesDeleteHelper } from 'Common/Folders';
|
||||
import {
|
||||
folderInformationMultiply,
|
||||
refreshFoldersInterval,
|
||||
messagesMoveHelper,
|
||||
messagesDeleteHelper,
|
||||
fetchFolderInformation
|
||||
} from 'Common/Folders';
|
||||
import { loadFolders } from 'Model/FolderCollection';
|
||||
|
||||
class AppUser extends AbstractApp {
|
||||
|
|
@ -207,7 +213,7 @@ class AppUser extends AbstractApp {
|
|||
*/
|
||||
folderInformation(folder, list) {
|
||||
if (folder && folder.trim()) {
|
||||
Remote.folderInformation(
|
||||
fetchFolderInformation(
|
||||
(iError, data) => {
|
||||
if (!iError && data.Result) {
|
||||
const result = data.Result,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ import {
|
|||
setFolderHash,
|
||||
getFolderHash,
|
||||
getFolderInboxName,
|
||||
getFolderFromCacheList
|
||||
getFolderFromCacheList,
|
||||
getFolderUidNext
|
||||
} from 'Common/Cache';
|
||||
import { SettingsUserStore } from 'Stores/User/Settings';
|
||||
import { FolderUserStore } from 'Stores/User/Folder';
|
||||
|
|
@ -26,6 +27,43 @@ sortFolders = folders => {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} folder
|
||||
* @param {Array=} list = []
|
||||
*/
|
||||
fetchFolderInformation = (fCallback, folder, list = []) => {
|
||||
let fetch = !arrayLength(list);
|
||||
const uids = [];
|
||||
|
||||
if (!fetch) {
|
||||
list.forEach(messageListItem => {
|
||||
if (!MessageFlagsCache.getFor(messageListItem.folder, messageListItem.uid)) {
|
||||
uids.push(messageListItem.uid);
|
||||
}
|
||||
|
||||
if (messageListItem.threads.length) {
|
||||
messageListItem.threads.forEach(uid => {
|
||||
if (!MessageFlagsCache.getFor(messageListItem.folder, uid)) {
|
||||
uids.push(uid);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
fetch = uids.length;
|
||||
}
|
||||
|
||||
if (fetch) {
|
||||
Remote.request('FolderInformation', fCallback, {
|
||||
Folder: folder,
|
||||
FlagsUids: uids,
|
||||
UidNext: getFolderUidNext(folder) // Used to check for new messages
|
||||
});
|
||||
} else if (SettingsUserStore.useThreads()) {
|
||||
MessagelistUserStore.reloadFlagsAndCachedMessage();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {Array=} aDisabled
|
||||
* @param {Array=} aHeaderLines
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ const USER_VIEW_MODELS_HOOKS = [],
|
|||
* @param {?number=} timeout
|
||||
*/
|
||||
rl.pluginRemoteRequest = (callback, action, parameters, timeout) => {
|
||||
rl.app && rl.app.Remote.request('Plugin' + action, callback, parameters, timeout);
|
||||
rl.app.Remote.request('Plugin' + action, callback, parameters, timeout);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
|||
import { SettingsUserStore } from 'Stores/User/Settings';
|
||||
import * as Local from 'Storage/Client';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
|
||||
export const
|
||||
|
||||
|
|
@ -269,7 +270,7 @@ populateMessageBody = (oMessage, preload) => {
|
|||
if (oMessage) {
|
||||
preload || MessageUserStore.hideMessageBodies();
|
||||
preload || MessageUserStore.loading(true);
|
||||
rl.app.Remote.message((iError, oData/*, bCached*/) => {
|
||||
Remote.message((iError, oData/*, bCached*/) => {
|
||||
if (iError) {
|
||||
if (Notification.RequestAborted !== iError && !preload) {
|
||||
MessageUserStore.message(null);
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
import { arrayLength, pString, pInt, b64EncodeJSONSafe } from 'Common/Utils';
|
||||
import { pString, pInt, b64EncodeJSONSafe } from 'Common/Utils';
|
||||
|
||||
import {
|
||||
getFolderHash,
|
||||
getFolderUidNext,
|
||||
getFolderFromCacheList,
|
||||
MessageFlagsCache
|
||||
getFolderFromCacheList
|
||||
} from 'Common/Cache';
|
||||
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
|
|
@ -16,8 +15,6 @@ import { FolderUserStore } from 'Stores/User/Folder';
|
|||
|
||||
import { AbstractFetchRemote } from 'Remote/AbstractFetch';
|
||||
|
||||
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
||||
|
||||
class RemoteUserFetch extends AbstractFetchRemote {
|
||||
|
||||
/**
|
||||
|
|
@ -97,57 +94,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} folder
|
||||
* @param {Array=} list = []
|
||||
*/
|
||||
folderInformation(fCallback, folder, list = []) {
|
||||
let fetch = !arrayLength(list);
|
||||
const uids = [];
|
||||
|
||||
if (!fetch) {
|
||||
list.forEach(messageListItem => {
|
||||
if (!MessageFlagsCache.getFor(messageListItem.folder, messageListItem.uid)) {
|
||||
uids.push(messageListItem.uid);
|
||||
}
|
||||
|
||||
if (messageListItem.threads.length) {
|
||||
messageListItem.threads.forEach(uid => {
|
||||
if (!MessageFlagsCache.getFor(messageListItem.folder, uid)) {
|
||||
uids.push(uid);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
fetch = uids.length;
|
||||
}
|
||||
|
||||
if (fetch) {
|
||||
this.request('FolderInformation', fCallback, {
|
||||
Folder: folder,
|
||||
FlagsUids: uids,
|
||||
UidNext: getFolderUidNext(folder) // Used to check for new messages
|
||||
});
|
||||
} else if (SettingsUserStore.useThreads()) {
|
||||
MessagelistUserStore.reloadFlagsAndCachedMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {boolean} bSetSeen
|
||||
* @param {Array} aThreadUids = null
|
||||
*/
|
||||
messageSetSeenToAll(sFolderFullName, bSetSeen, aThreadUids = null) {
|
||||
this.request('MessageSetSeenToAll', null, {
|
||||
Folder: sFolderFullName,
|
||||
SetAction: bSetSeen ? 1 : 0,
|
||||
ThreadUids: aThreadUids ? aThreadUids.join(',') : ''
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
|
|
@ -167,37 +113,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {boolean} bSubscribe
|
||||
*/
|
||||
folderSetMetadata(fCallback, sFolderFullName, sKey, sValue) {
|
||||
this.request('FolderSetMetadata', fCallback, {
|
||||
Folder: sFolderFullName,
|
||||
Key: sKey,
|
||||
Value: sValue
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sQuery
|
||||
* @param {number} iPage
|
||||
*/
|
||||
suggestions(fCallback, sQuery, iPage) {
|
||||
this.request('Suggestions',
|
||||
fCallback,
|
||||
{
|
||||
Query: sQuery,
|
||||
Page: iPage
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['Suggestions']
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
folderMove(sPrevFolderFullName, sNewFolderFullName, bSubscribe) {
|
||||
return this.post('FolderMove', FolderUserStore.foldersRenaming, {
|
||||
|
|
@ -207,12 +122,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
});
|
||||
}
|
||||
*/
|
||||
attachmentsActions(sAction, aHashes, fTrigger) {
|
||||
return this.post('AttachmentsActions', fTrigger, {
|
||||
Do: sAction,
|
||||
Hashes: aHashes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new RemoteUserFetch();
|
||||
|
|
|
|||
|
|
@ -163,7 +163,11 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
toggleFolderKolabType(folder, event) {
|
||||
let type = event.target.value;
|
||||
// TODO: append '.default' ?
|
||||
Remote.folderSetMetadata(null, folder.fullName, FolderMetadataKeys.KolabFolderType, type);
|
||||
Remote.request('FolderSetMetadata', null, {
|
||||
Folder: folder.fullName,
|
||||
Key: FolderMetadataKeys.KolabFolderType,
|
||||
Value: type
|
||||
});
|
||||
folder.kolabType(type);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import { MessageUserStore } from 'Stores/User/Message';
|
|||
import { NotificationUserStore } from 'Stores/User/Notification';
|
||||
import { SettingsUserStore } from 'Stores/User/Settings';
|
||||
|
||||
//import Remote from 'Remote/User/Fetch'; // Circular dependency
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
|
||||
const
|
||||
isChecked = item => item.checked();
|
||||
|
|
@ -169,7 +169,7 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrenFolderCache
|
|||
|
||||
MessagelistUserStore.loading(true);
|
||||
MessagelistUserStore.error('');
|
||||
rl.app.Remote.messageList(
|
||||
Remote.messageList(
|
||||
(iError, oData, bCached) => {
|
||||
if (iError) {
|
||||
if (Notification.RequestAborted !== iError) {
|
||||
|
|
@ -279,7 +279,7 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
|
|||
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + length);
|
||||
}
|
||||
|
||||
rl.app.Remote.request('MessageSetSeen', null, {
|
||||
Remote.request('MessageSetSeen', null, {
|
||||
Folder: sFolderFullName,
|
||||
Uids: rootUids.join(','),
|
||||
SetAction: iSetAction == MessageSetAction.SetSeen ? 1 : 0
|
||||
|
|
@ -291,7 +291,7 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
|
|||
rootUids.forEach(sSubUid =>
|
||||
MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
|
||||
);
|
||||
rl.app.Remote.request('MessageSetFlagged', null, {
|
||||
Remote.request('MessageSetFlagged', null, {
|
||||
Folder: sFolderFullName,
|
||||
Uids: rootUids.join(','),
|
||||
SetAction: iSetAction == MessageSetAction.SetFlag ? 1 : 0
|
||||
|
|
|
|||
|
|
@ -687,7 +687,8 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
|
||||
// getAutocomplete
|
||||
emailsSource(oData, fResponse) {
|
||||
Remote.suggestions((iError, data) => {
|
||||
Remote.request('Suggestions',
|
||||
(iError, data) => {
|
||||
if (!iError && isArray(data.Result)) {
|
||||
fResponse(
|
||||
data.Result.map(item => (item && item[0] ? (new EmailModel(item[0], item[1])).toLine(false) : null))
|
||||
|
|
@ -696,7 +697,15 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
} else if (Notification.RequestAborted !== iError) {
|
||||
fResponse([]);
|
||||
}
|
||||
}, oData.term);
|
||||
},
|
||||
{
|
||||
Query: oData.term
|
||||
// ,Page: 1
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['Suggestions']
|
||||
);
|
||||
}
|
||||
|
||||
reloadDraftFolder() {
|
||||
|
|
|
|||
|
|
@ -490,7 +490,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
|
||||
message.flags.push('\\seen');
|
||||
// message.flags.valueHasMutated();
|
||||
uids.push(message.uid);
|
||||
iThreadUid && uids.push(message.uid);
|
||||
});
|
||||
|
||||
if (iThreadUid) {
|
||||
|
|
@ -501,7 +501,11 @@ export class MailMessageList extends AbstractViewRight {
|
|||
|
||||
MessageFlagsCache.clearFolder(sFolderFullName);
|
||||
|
||||
Remote.messageSetSeenToAll(sFolderFullName, true, iThreadUid ? uids : null);
|
||||
Remote.request('MessageSetSeenToAll', null, {
|
||||
Folder: sFolderFullName,
|
||||
SetAction: 1,
|
||||
ThreadUids: uids.join(',')
|
||||
});
|
||||
|
||||
MessagelistUserStore.reloadFlagsAndCachedMessage();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -522,7 +522,10 @@ export class MailMessageView extends AbstractViewRight {
|
|||
.map(item => (item && !item.isLinked() && item.checked() ? item.download : ''))
|
||||
.filter(v => v);
|
||||
if (hashes.length) {
|
||||
Remote.attachmentsActions('Zip', hashes, this.downloadAsZipLoading)
|
||||
Remote.post('AttachmentsActions', this.downloadAsZipLoading, {
|
||||
Do: 'Zip',
|
||||
Hashes: hashes
|
||||
})
|
||||
.then(result => {
|
||||
let hash = result && result.Result && result.Result.FileHash;
|
||||
if (hash) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue