mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-04 20:24:12 +08:00
change AbstractFetchRemote with a better structure
This commit is contained in:
parent
0d809dd574
commit
792fee547a
26 changed files with 265 additions and 723 deletions
106
dev/App/User.js
106
dev/App/User.js
|
@ -97,11 +97,10 @@ class AppUser extends AbstractApp {
|
|||
setInterval(() => {
|
||||
const currentTime = Date.now();
|
||||
if (currentTime > (lastTime + interval + 1000)) {
|
||||
Remote.jsVersion(iError => {
|
||||
if (100 < iError) {
|
||||
this.reload();
|
||||
}
|
||||
}, Settings.app('version'));
|
||||
Remote.request('Version',
|
||||
iError => (100 < iError) && this.reload(),
|
||||
{ Version: Settings.app('version') }
|
||||
);
|
||||
}
|
||||
lastTime = currentTime;
|
||||
}, interval);
|
||||
|
@ -185,13 +184,18 @@ class AppUser extends AbstractApp {
|
|||
isTrash = sTrashFolder === item.To,
|
||||
isHam = !isSpam && sSpamFolder === item.From && getFolderInboxName() === item.To;
|
||||
|
||||
Remote.messagesMove(
|
||||
Remote.request('MessageMove',
|
||||
this.moveOrDeleteResponseHelper,
|
||||
item.From,
|
||||
item.To,
|
||||
item.Uid,
|
||||
isSpam ? 'SPAM' : isHam ? 'HAM' : '',
|
||||
isSpam || isTrash
|
||||
{
|
||||
FromFolder: item.From,
|
||||
ToFolder: item.To,
|
||||
Uids: item.Uid.join(','),
|
||||
MarkAsRead: (isSpam || isTrash) ? 1 : 0,
|
||||
Learning: isSpam ? 'SPAM' : isHam ? 'HAM' : ''
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['MessageList']
|
||||
);
|
||||
});
|
||||
|
||||
|
@ -213,11 +217,24 @@ class AppUser extends AbstractApp {
|
|||
}
|
||||
|
||||
messagesCopyHelper(sFromFolderFullName, sToFolderFullName, aUidForCopy) {
|
||||
Remote.messagesCopy(this.moveOrDeleteResponseHelper, sFromFolderFullName, sToFolderFullName, aUidForCopy);
|
||||
Remote.request('MessageCopy', this.moveOrDeleteResponseHelper, {
|
||||
FromFolder: sFromFolderFullName,
|
||||
ToFolder: sToFolderFullName,
|
||||
Uids: aUidForCopy.join(',')
|
||||
});
|
||||
}
|
||||
|
||||
messagesDeleteHelper(sFromFolderFullName, aUidForRemove) {
|
||||
Remote.messagesDelete(this.moveOrDeleteResponseHelper, sFromFolderFullName, aUidForRemove);
|
||||
Remote.request('MessageDelete',
|
||||
this.moveOrDeleteResponseHelper,
|
||||
{
|
||||
Folder: sFromFolderFullName,
|
||||
Uids: aUidForRemove.join(',')
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['MessageList']
|
||||
);
|
||||
}
|
||||
|
||||
moveOrDeleteResponseHelper(iError, oData) {
|
||||
|
@ -414,7 +431,7 @@ class AppUser extends AbstractApp {
|
|||
AccountUserStore.loading(true);
|
||||
IdentityUserStore.loading(true);
|
||||
|
||||
Remote.accountsAndIdentities((iError, oData) => {
|
||||
Remote.request('AccountsAndIdentities', (iError, oData) => {
|
||||
AccountUserStore.loading(false);
|
||||
IdentityUserStore.loading(false);
|
||||
|
||||
|
@ -531,7 +548,7 @@ class AppUser extends AbstractApp {
|
|||
folderInformationMultiply(boot = false) {
|
||||
const folders = FolderUserStore.getNextFolderNames(refreshFolders);
|
||||
if (arrayLength(folders)) {
|
||||
Remote.folderInformationMultiply((iError, oData) => {
|
||||
Remote.request('FolderInformationMultiply', (iError, oData) => {
|
||||
if (!iError && arrayLength(oData.Result)) {
|
||||
const utc = Date.now();
|
||||
oData.Result.forEach(item => {
|
||||
|
@ -569,7 +586,9 @@ class AppUser extends AbstractApp {
|
|||
setTimeout(() => this.folderInformationMultiply(true), 2000);
|
||||
}
|
||||
}
|
||||
}, folders);
|
||||
}, {
|
||||
Folders: folders
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -579,32 +598,19 @@ class AppUser extends AbstractApp {
|
|||
* @param {Array=} messages = null
|
||||
*/
|
||||
messageListAction(sFolderFullName, iSetAction, messages) {
|
||||
messages = messages || MessageUserStore.listChecked();
|
||||
|
||||
let folder = null,
|
||||
alreadyUnread = 0,
|
||||
rootUids = [];
|
||||
rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null)
|
||||
.validUnique(),
|
||||
length = rootUids.length;
|
||||
|
||||
if (undefined === messages || !messages) {
|
||||
messages = MessageUserStore.listChecked();
|
||||
}
|
||||
|
||||
rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null)
|
||||
.validUnique();
|
||||
|
||||
if (sFolderFullName && rootUids.length) {
|
||||
if (sFolderFullName && length) {
|
||||
switch (iSetAction) {
|
||||
case MessageSetAction.SetSeen:
|
||||
rootUids.forEach(sSubUid =>
|
||||
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
|
||||
);
|
||||
|
||||
folder = getFolderFromCacheList(sFolderFullName);
|
||||
if (folder) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread);
|
||||
}
|
||||
|
||||
Remote.messageSetSeen(null, sFolderFullName, rootUids, true);
|
||||
break;
|
||||
|
||||
length = 0;
|
||||
// fallthrough is intentionally
|
||||
case MessageSetAction.UnsetSeen:
|
||||
rootUids.forEach(sSubUid =>
|
||||
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
|
||||
|
@ -612,26 +618,26 @@ class AppUser extends AbstractApp {
|
|||
|
||||
folder = getFolderFromCacheList(sFolderFullName);
|
||||
if (folder) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + rootUids.length);
|
||||
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + length);
|
||||
}
|
||||
|
||||
Remote.messageSetSeen(null, sFolderFullName, rootUids, false);
|
||||
Remote.request('MessageSetSeen', null, {
|
||||
Folder: sFolderFullName,
|
||||
Uids: rootUids.join(','),
|
||||
SetAction: iSetAction == MessageSetAction.SetSeen ? 1 : 0
|
||||
});
|
||||
break;
|
||||
|
||||
case MessageSetAction.SetFlag:
|
||||
rootUids.forEach(sSubUid =>
|
||||
MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
|
||||
);
|
||||
|
||||
Remote.messageSetFlagged(null, sFolderFullName, rootUids, true);
|
||||
break;
|
||||
|
||||
case MessageSetAction.UnsetFlag:
|
||||
rootUids.forEach(sSubUid =>
|
||||
MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
|
||||
);
|
||||
|
||||
Remote.messageSetFlagged(null, sFolderFullName, rootUids, false);
|
||||
Remote.request('MessageSetFlagged', null, {
|
||||
Folder: sFolderFullName,
|
||||
Uids: rootUids.join(','),
|
||||
SetAction: iSetAction == MessageSetAction.SetFlag ? 1 : 0
|
||||
});
|
||||
break;
|
||||
// no default
|
||||
}
|
||||
|
@ -694,7 +700,7 @@ class AppUser extends AbstractApp {
|
|||
}
|
||||
|
||||
logout() {
|
||||
Remote.logout(() => rl.logoutReload());
|
||||
Remote.request('Logout', () => rl.logoutReload());
|
||||
}
|
||||
|
||||
bootstart() {
|
||||
|
@ -757,7 +763,7 @@ class AppUser extends AbstractApp {
|
|||
FolderUserStore.hasCapability('LIST-STATUS') || this.folderInformationMultiply(true);
|
||||
}, 1000);
|
||||
|
||||
setTimeout(() => Remote.appDelayStart(null), 35000);
|
||||
setTimeout(() => Remote.request('AppDelayStart'), 35000);
|
||||
|
||||
// When auto-login is active
|
||||
if (
|
||||
|
|
|
@ -13,7 +13,7 @@ const USER_VIEW_MODELS_HOOKS = [],
|
|||
* @param {?number=} timeout
|
||||
*/
|
||||
rl.pluginRemoteRequest = (callback, action, parameters, timeout) => {
|
||||
rl.app && rl.app.Remote.defaultRequest(callback, 'Plugin' + action, parameters, timeout);
|
||||
rl.app && rl.app.Remote.request('Plugin' + action, callback, parameters, timeout);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -125,7 +125,7 @@ export class AbstractFetchRemote
|
|||
* @param {string=} sGetAdd = ''
|
||||
* @param {Array=} aAbortActions = []
|
||||
*/
|
||||
defaultRequest(fCallback, sAction, params, iTimeout, sGetAdd, abortActions) {
|
||||
request(sAction, fCallback, params, iTimeout, sGetAdd, abortActions) {
|
||||
params = params || {};
|
||||
|
||||
const start = Date.now();
|
||||
|
@ -184,24 +184,14 @@ export class AbstractFetchRemote
|
|||
* @param {?Function} fCallback
|
||||
*/
|
||||
noop(fCallback) {
|
||||
this.defaultRequest(fCallback, 'Noop');
|
||||
this.request('Noop', fCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
getPublicKey(fCallback) {
|
||||
this.defaultRequest(fCallback, 'GetPublicKey');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sVersion
|
||||
*/
|
||||
jsVersion(fCallback, sVersion) {
|
||||
this.defaultRequest(fCallback, 'Version', {
|
||||
Version: sVersion
|
||||
});
|
||||
this.request('GetPublicKey', fCallback);
|
||||
}
|
||||
|
||||
fastResolve(mData) {
|
||||
|
@ -217,7 +207,7 @@ export class AbstractFetchRemote
|
|||
}
|
||||
}
|
||||
|
||||
postRequest(action, fTrigger, params, timeOut) {
|
||||
post(action, fTrigger, params, timeOut) {
|
||||
this.setTrigger(fTrigger, true);
|
||||
return fetchJSON(action, '', params, pInt(timeOut, 30000),
|
||||
data => {
|
||||
|
|
|
@ -7,7 +7,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {string} sPassword
|
||||
*/
|
||||
adminLogin(fCallback, sLogin, sPassword, sCode) {
|
||||
this.defaultRequest(fCallback, 'AdminLogin', {
|
||||
this.request('AdminLogin', fCallback, {
|
||||
Login: sLogin,
|
||||
Password: sPassword,
|
||||
TOTP: sCode
|
||||
|
@ -18,7 +18,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {?Function} fCallback
|
||||
*/
|
||||
adminLogout(fCallback) {
|
||||
this.defaultRequest(fCallback, 'AdminLogout');
|
||||
this.request('AdminLogout', fCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -26,7 +26,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {?} oData
|
||||
*/
|
||||
saveAdminConfig(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData);
|
||||
this.request('AdminSettingsUpdate', fCallback, oData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {boolean=} bIncludeAliases = true
|
||||
*/
|
||||
domainList(fCallback, bIncludeAliases = true) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainList', {
|
||||
this.request('AdminDomainList', fCallback, {
|
||||
IncludeAliases: bIncludeAliases ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {?Function} fCallback
|
||||
*/
|
||||
packagesList(fCallback) {
|
||||
this.defaultRequest(fCallback, 'AdminPackagesList');
|
||||
this.request('AdminPackagesList', fCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,9 +51,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {Object} oPackage
|
||||
*/
|
||||
packageInstall(fCallback, oPackage) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'AdminPackageInstall',
|
||||
this.request('AdminPackageInstall', fCallback,
|
||||
{
|
||||
Id: oPackage.id,
|
||||
Type: oPackage.type,
|
||||
|
@ -68,7 +66,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {Object} oPackage
|
||||
*/
|
||||
packageDelete(fCallback, oPackage) {
|
||||
this.defaultRequest(fCallback, 'AdminPackageDelete', {
|
||||
this.request('AdminPackageDelete', fCallback, {
|
||||
Id: oPackage.id
|
||||
});
|
||||
}
|
||||
|
@ -78,7 +76,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {string} sName
|
||||
*/
|
||||
domain(fCallback, sName) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainLoad', {
|
||||
this.request('AdminDomainLoad', fCallback, {
|
||||
Name: sName
|
||||
});
|
||||
}
|
||||
|
@ -88,7 +86,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {string} sId
|
||||
*/
|
||||
plugin(fCallback, sId) {
|
||||
this.defaultRequest(fCallback, 'AdminPluginLoad', {
|
||||
this.request('AdminPluginLoad', fCallback, {
|
||||
Id: sId
|
||||
});
|
||||
}
|
||||
|
@ -98,7 +96,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {string} sName
|
||||
*/
|
||||
domainDelete(fCallback, sName) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainDelete', {
|
||||
this.request('AdminDomainDelete', fCallback, {
|
||||
Name: sName
|
||||
});
|
||||
}
|
||||
|
@ -109,7 +107,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {boolean} bDisabled
|
||||
*/
|
||||
domainDisable(fCallback, sName, bDisabled) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainDisable', {
|
||||
this.request('AdminDomainDisable', fCallback, {
|
||||
Name: sName,
|
||||
Disabled: bDisabled ? 1 : 0
|
||||
});
|
||||
|
@ -120,7 +118,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {Object} oConfig
|
||||
*/
|
||||
pluginSettingsUpdate(fCallback, oConfig) {
|
||||
this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig);
|
||||
this.request('AdminPluginSettingsUpdate', fCallback, oConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -129,21 +127,21 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {boolean} bDisabled
|
||||
*/
|
||||
pluginDisable(fCallback, sId, bDisabled) {
|
||||
this.defaultRequest(fCallback, 'AdminPluginDisable', {
|
||||
this.request('AdminPluginDisable', fCallback, {
|
||||
Id: sId,
|
||||
Disabled: bDisabled ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
createDomainAlias(fCallback, sName, sAlias) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainAliasSave', {
|
||||
this.request('AdminDomainAliasSave', fCallback, {
|
||||
Name: sName,
|
||||
Alias: sAlias
|
||||
});
|
||||
}
|
||||
|
||||
createOrUpdateDomain(fCallback, oDomain) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainSave', {
|
||||
this.request('AdminDomainSave', fCallback, {
|
||||
Create: oDomain.edit() ? 0 : 1,
|
||||
Name: oDomain.name(),
|
||||
|
||||
|
@ -170,7 +168,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
}
|
||||
|
||||
testConnectionForDomain(fCallback, oDomain) {
|
||||
this.defaultRequest(fCallback, 'AdminDomainTest', {
|
||||
this.request('AdminDomainTest', fCallback, {
|
||||
Name: oDomain.name(),
|
||||
IncHost: oDomain.imapServer(),
|
||||
IncPort: oDomain.imapPort(),
|
||||
|
@ -192,7 +190,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
|
|||
* @param {?} oData
|
||||
*/
|
||||
testContacts(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'AdminContactsTest', oData);
|
||||
this.request('AdminContactsTest', fCallback, oData);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -35,135 +35,6 @@ const urlSafeJSON = data => btoa(encodeURIComponent(JSON.stringify(data)).replac
|
|||
|
||||
class RemoteUserFetch extends AbstractFetchRemote {
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
contactsSync(fCallback) {
|
||||
this.defaultRequest(fCallback, 'ContactsSync', null, 200000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {boolean} bEnable
|
||||
* @param {string} sUrl
|
||||
* @param {string} sUser
|
||||
* @param {string} sPassword
|
||||
*/
|
||||
saveContactsSyncData(fCallback, bEnable, sUrl, sUser, sPassword) {
|
||||
this.defaultRequest(fCallback, 'SaveContactsSyncData', {
|
||||
Enable: bEnable ? 1 : 0,
|
||||
Url: sUrl,
|
||||
User: sUser,
|
||||
Password: sPassword
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sEmail
|
||||
* @param {string} sPassword
|
||||
* @param {boolean=} bNew
|
||||
*/
|
||||
accountSetup(fCallback, sEmail, sPassword, bNew = true) {
|
||||
this.defaultRequest(fCallback, 'AccountSetup', {
|
||||
Email: sEmail,
|
||||
Password: sPassword,
|
||||
New: bNew ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sEmailToDelete
|
||||
*/
|
||||
accountDelete(fCallback, sEmailToDelete) {
|
||||
this.defaultRequest(fCallback, 'AccountDelete', {
|
||||
EmailToDelete: sEmailToDelete
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aAccounts
|
||||
* @param {Array} aIdentities
|
||||
*/
|
||||
accountsAndIdentitiesSortOrder(fCallback, aAccounts, aIdentities) {
|
||||
this.defaultRequest(fCallback, 'AccountsAndIdentitiesSortOrder', {
|
||||
Accounts: aAccounts,
|
||||
Identities: aIdentities
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sId
|
||||
* @param {string} sEmail
|
||||
* @param {string} sName
|
||||
* @param {string} sReplyTo
|
||||
* @param {string} sBcc
|
||||
* @param {string} sSignature
|
||||
* @param {boolean} bSignatureInsertBefore
|
||||
*/
|
||||
identityUpdate(fCallback, sId, sEmail, sName, sReplyTo, sBcc, sSignature, bSignatureInsertBefore) {
|
||||
this.defaultRequest(fCallback, 'IdentityUpdate', {
|
||||
Id: sId,
|
||||
Email: sEmail,
|
||||
Name: sName,
|
||||
ReplyTo: sReplyTo,
|
||||
Bcc: sBcc,
|
||||
Signature: sSignature,
|
||||
SignatureInsertBefore: bSignatureInsertBefore ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sIdToDelete
|
||||
*/
|
||||
identityDelete(fCallback, sIdToDelete) {
|
||||
this.defaultRequest(fCallback, 'IdentityDelete', {
|
||||
IdToDelete: sIdToDelete
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
accountsAndIdentities(fCallback) {
|
||||
this.defaultRequest(fCallback, 'AccountsAndIdentities');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {SieveScriptModel} script
|
||||
*/
|
||||
filtersScriptSave(fCallback, script) {
|
||||
this.defaultRequest(fCallback, 'FiltersScriptSave', script.toJson());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} name
|
||||
*/
|
||||
filtersScriptActivate(fCallback, name) {
|
||||
this.defaultRequest(fCallback, 'FiltersScriptActivate', {name:name});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} name
|
||||
*/
|
||||
filtersScriptDelete(fCallback, name) {
|
||||
this.defaultRequest(fCallback, 'FiltersScriptDelete', {name:name});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
filtersGet(fCallback) {
|
||||
this.defaultRequest(fCallback, 'Filters', {});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Function} fCallback
|
||||
* @param {object} params
|
||||
|
@ -199,9 +70,8 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
params = {};
|
||||
}
|
||||
|
||||
this.defaultRequest(
|
||||
this.request('MessageList',
|
||||
fCallback,
|
||||
'MessageList',
|
||||
params,
|
||||
30000,
|
||||
sGetAdd,
|
||||
|
@ -209,21 +79,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aDownloads
|
||||
*/
|
||||
messageUploadAttachments(fCallback, aDownloads) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'MessageUploadAttachments',
|
||||
{
|
||||
Attachments: aDownloads
|
||||
},
|
||||
999000
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
|
@ -235,9 +90,8 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
iUid = pInt(iUid);
|
||||
|
||||
if (getFolderFromCacheList(sFolderFullName) && 0 < iUid) {
|
||||
this.defaultRequest(
|
||||
this.request('Message',
|
||||
fCallback,
|
||||
'Message',
|
||||
{},
|
||||
null,
|
||||
'Message/' +
|
||||
|
@ -258,38 +112,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aExternals
|
||||
*/
|
||||
composeUploadExternals(fCallback, aExternals) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'ComposeUploadExternals',
|
||||
{
|
||||
Externals: aExternals
|
||||
},
|
||||
999000
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sUrl
|
||||
* @param {string} sAccessToken
|
||||
*/
|
||||
composeUploadDrive(fCallback, sUrl, sAccessToken) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'ComposeUploadDrive',
|
||||
{
|
||||
AccessToken: sAccessToken,
|
||||
Url: sUrl
|
||||
},
|
||||
999000
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} folder
|
||||
|
@ -321,7 +143,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
}
|
||||
|
||||
if (request) {
|
||||
this.defaultRequest(fCallback, 'FolderInformation', {
|
||||
this.request('FolderInformation', fCallback, {
|
||||
Folder: folder,
|
||||
FlagsUids: isArray(uids) ? uids : [],
|
||||
UidNext: getFolderInboxName() === folder ? getFolderUidNext(folder) : 0
|
||||
|
@ -331,51 +153,6 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aFolders
|
||||
*/
|
||||
folderInformationMultiply(fCallback, aFolders) {
|
||||
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
|
||||
Folders: aFolders
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
logout(fCallback) {
|
||||
this.defaultRequest(fCallback, 'Logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {Array} aUids
|
||||
* @param {boolean} bSetFlagged
|
||||
*/
|
||||
messageSetFlagged(fCallback, sFolderFullName, aUids, bSetFlagged) {
|
||||
this.defaultRequest(fCallback, 'MessageSetFlagged', {
|
||||
Folder: sFolderFullName,
|
||||
Uids: aUids.join(','),
|
||||
SetAction: bSetFlagged ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {Array} aUids
|
||||
* @param {boolean} bSetSeen
|
||||
*/
|
||||
messageSetSeen(fCallback, sFolderFullName, aUids, bSetSeen) {
|
||||
this.defaultRequest(fCallback, 'MessageSetSeen', {
|
||||
Folder: sFolderFullName,
|
||||
Uids: aUids.join(','),
|
||||
SetAction: bSetSeen ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
|
@ -383,61 +160,19 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
* @param {Array} aThreadUids = null
|
||||
*/
|
||||
messageSetSeenToAll(fCallback, sFolderFullName, bSetSeen, aThreadUids = null) {
|
||||
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
||||
this.request('MessageSetSeenToAll', fCallback, {
|
||||
Folder: sFolderFullName,
|
||||
SetAction: bSetSeen ? 1 : 0,
|
||||
ThreadUids: aThreadUids ? aThreadUids.join(',') : ''
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
saveMessage(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'SaveMessage', oData, 200000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sMessageFolder
|
||||
* @param {number} iMessageUid
|
||||
* @param {string} sReadReceipt
|
||||
* @param {string} sSubject
|
||||
* @param {string} sText
|
||||
*/
|
||||
sendReadReceiptMessage(fCallback, sMessageFolder, iMessageUid, sReadReceipt, sSubject, sText) {
|
||||
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
|
||||
MessageFolder: sMessageFolder,
|
||||
MessageUid: iMessageUid,
|
||||
ReadReceipt: sReadReceipt,
|
||||
Subject: sSubject,
|
||||
Text: sText
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
sendMessage(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'SendMessage', oData, 30000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
saveSystemFolders(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
saveSettings(fCallback, oData) {
|
||||
this.defaultRequest(fCallback, 'SettingsUpdate', oData);
|
||||
this.request('SettingsUpdate', fCallback, oData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -451,179 +186,27 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
*/
|
||||
folderClear(fCallback, sFolderFullName) {
|
||||
this.defaultRequest(fCallback, 'FolderClear', {
|
||||
Folder: sFolderFullName
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {boolean} bSubscribe
|
||||
*/
|
||||
folderSetSubscribe(fCallback, sFolderFullName, bSubscribe) {
|
||||
this.defaultRequest(fCallback, 'FolderSubscribe', {
|
||||
Folder: sFolderFullName,
|
||||
Subscribe: bSubscribe ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {boolean} bSubscribe
|
||||
*/
|
||||
folderSetMetadata(fCallback, sFolderFullName, sKey, sValue) {
|
||||
this.defaultRequest(fCallback, 'FolderSetMetadata', {
|
||||
this.request('FolderSetMetadata', fCallback, {
|
||||
Folder: sFolderFullName,
|
||||
Key: sKey,
|
||||
Value: sValue
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullName
|
||||
* @param {boolean} bCheckable
|
||||
*/
|
||||
folderSetCheckable(fCallback, sFolderFullName, bCheckable) {
|
||||
this.defaultRequest(fCallback, 'FolderCheckable', {
|
||||
Folder: sFolderFullName,
|
||||
Checkable: bCheckable ? 1 : 0
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {string} sToFolder
|
||||
* @param {Array} aUids
|
||||
* @param {string=} sLearning
|
||||
* @param {boolean=} bMarkAsRead
|
||||
*/
|
||||
messagesMove(fCallback, sFolder, sToFolder, aUids, sLearning, bMarkAsRead) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'MessageMove',
|
||||
{
|
||||
FromFolder: sFolder,
|
||||
ToFolder: sToFolder,
|
||||
Uids: aUids.join(','),
|
||||
MarkAsRead: bMarkAsRead ? 1 : 0,
|
||||
Learning: sLearning || ''
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['MessageList']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {string} sToFolder
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
messagesCopy(fCallback, sFolder, sToFolder, aUids) {
|
||||
this.defaultRequest(fCallback, 'MessageCopy', {
|
||||
FromFolder: sFolder,
|
||||
ToFolder: sToFolder,
|
||||
Uids: aUids.join(',')
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
messagesDelete(fCallback, sFolder, aUids) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'MessageDelete',
|
||||
{
|
||||
Folder: sFolder,
|
||||
Uids: aUids.join(',')
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['MessageList']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
appDelayStart(fCallback) {
|
||||
this.defaultRequest(fCallback, 'AppDelayStart');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
quota(fCallback) {
|
||||
this.defaultRequest(fCallback, 'Quota');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {number} iOffset
|
||||
* @param {number} iLimit
|
||||
* @param {string} sSearch
|
||||
*/
|
||||
contacts(fCallback, iOffset, iLimit, sSearch) {
|
||||
this.defaultRequest(
|
||||
fCallback,
|
||||
'Contacts',
|
||||
{
|
||||
Offset: iOffset,
|
||||
Limit: iLimit,
|
||||
Search: sSearch
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['Contacts']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sRequestUid
|
||||
* @param {string} sUid
|
||||
* @param {Array} aProperties
|
||||
*/
|
||||
contactSave(fCallback, sRequestUid, sUid, aProperties) {
|
||||
this.defaultRequest(fCallback, 'ContactSave', {
|
||||
RequestUid: sRequestUid,
|
||||
Uid: sUid,
|
||||
Properties: aProperties
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
contactsDelete(fCallback, aUids) {
|
||||
this.defaultRequest(fCallback, 'ContactsDelete', {
|
||||
Uids: aUids.join(',')
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sQuery
|
||||
* @param {number} iPage
|
||||
*/
|
||||
suggestions(fCallback, sQuery, iPage) {
|
||||
this.defaultRequest(
|
||||
this.request('Suggestions',
|
||||
fCallback,
|
||||
'Suggestions',
|
||||
{
|
||||
Query: sQuery,
|
||||
Page: iPage
|
||||
|
@ -634,19 +217,12 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
clearUserBackground(fCallback) {
|
||||
this.defaultRequest(fCallback, 'ClearUserBackground');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
foldersReload(fCallback) {
|
||||
this.abort('Folders')
|
||||
.postRequest('Folders', FolderUserStore.foldersLoading)
|
||||
.post('Folders', FolderUserStore.foldersLoading)
|
||||
.then(data => {
|
||||
data = FolderCollectionModel.reviveFromJson(data.Result);
|
||||
data && data.storeIt();
|
||||
|
@ -662,35 +238,16 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
this.foldersTimeout = setTimeout(() => this.foldersReload(), 500);
|
||||
}
|
||||
|
||||
folderDelete(sFolderFullName) {
|
||||
return this.postRequest('FolderDelete', FolderUserStore.foldersDeleting, {
|
||||
Folder: sFolderFullName
|
||||
});
|
||||
}
|
||||
|
||||
folderCreate(sNewFolderName, sParentName) {
|
||||
return this.postRequest('FolderCreate', FolderUserStore.foldersCreating, {
|
||||
Folder: sNewFolderName,
|
||||
Parent: sParentName
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
folderMove(sPrevFolderFullName, sNewFolderFullName) {
|
||||
return this.postRequest('FolderMove', FolderUserStore.foldersRenaming, {
|
||||
return this.post('FolderMove', FolderUserStore.foldersRenaming, {
|
||||
Folder: sPrevFolderFullName,
|
||||
NewFolder: sNewFolderFullName
|
||||
});
|
||||
}
|
||||
|
||||
folderRename(sPrevFolderFullName, sNewFolderName) {
|
||||
return this.postRequest('FolderRename', FolderUserStore.foldersRenaming, {
|
||||
Folder: sPrevFolderFullName,
|
||||
NewFolderName: sNewFolderName
|
||||
});
|
||||
}
|
||||
|
||||
*/
|
||||
attachmentsActions(sAction, aHashes, fTrigger) {
|
||||
return this.postRequest('AttachmentsActions', fTrigger, {
|
||||
return this.post('AttachmentsActions', fTrigger, {
|
||||
Do: sAction,
|
||||
Hashes: aHashes
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ export class AboutAdminSettings /*extends AbstractViewSettings*/ {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
Remote.defaultRequest((iError, data) => iError || this.phpextensions(data.Result), 'AdminPHPExtensions');
|
||||
Remote.request('AdminPHPExtensions', (iError, data) => iError || this.phpextensions(data.Result));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ export class SecurityAdminSettings /*extends AbstractViewSettings*/ {
|
|||
this.adminPasswordUpdateError(false);
|
||||
this.adminPasswordUpdateSuccess(false);
|
||||
|
||||
Remote.defaultRequest((iError, data) => {
|
||||
Remote.request('AdminPasswordUpdate', (iError, data) => {
|
||||
if (iError) {
|
||||
this.adminPasswordUpdateError(true);
|
||||
} else {
|
||||
|
@ -104,7 +104,7 @@ export class SecurityAdminSettings /*extends AbstractViewSettings*/ {
|
|||
|
||||
this.weakPassword(!!data.Result.Weak);
|
||||
}
|
||||
}, 'AdminPasswordUpdate', {
|
||||
}, {
|
||||
'Login': this.adminLogin(),
|
||||
'Password': this.adminPassword(),
|
||||
'NewPassword': this.adminPasswordNew(),
|
||||
|
|
|
@ -54,14 +54,16 @@ export class AccountsUserSettings /*extends AbstractViewSettings*/ {
|
|||
if (accountToRemove) {
|
||||
this.accounts.remove((account) => accountToRemove === account);
|
||||
|
||||
Remote.accountDelete((iError, data) => {
|
||||
Remote.request('AccountDelete', (iError, data) => {
|
||||
if (!iError && data.Reload) {
|
||||
rl.route.root();
|
||||
setTimeout(() => location.reload(), 1);
|
||||
} else {
|
||||
rl.app.accountsAndIdentities();
|
||||
}
|
||||
}, accountToRemove.email);
|
||||
}, {
|
||||
EmailToDelete: accountToRemove.email
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -76,16 +78,18 @@ export class AccountsUserSettings /*extends AbstractViewSettings*/ {
|
|||
|
||||
if (identityToRemove) {
|
||||
IdentityUserStore.remove(oIdentity => identityToRemove === oIdentity);
|
||||
Remote.identityDelete(() => rl.app.accountsAndIdentities(), identityToRemove.id());
|
||||
Remote.request('IdentityDelete', () => rl.app.accountsAndIdentities(), {
|
||||
IdToDelete: identityToRemove.id()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
accountsAndIdentitiesAfterMove() {
|
||||
Remote.accountsAndIdentitiesSortOrder(null,
|
||||
AccountUserStore.getEmailAddresses().filter(v => v != SettingsGet('MainEmail')),
|
||||
IdentityUserStore.getIDS()
|
||||
);
|
||||
Remote.request('AccountsAndIdentitiesSortOrder', null, {
|
||||
Accounts: AccountUserStore.getEmailAddresses().filter(v => v != SettingsGet('MainEmail')),
|
||||
Identities: IdentityUserStore.getIDS()
|
||||
});
|
||||
}
|
||||
|
||||
onBuild(oDom) {
|
||||
|
|
|
@ -32,13 +32,12 @@ export class ContactsUserSettings /*extends AbstractViewSettings*/ {
|
|||
);
|
||||
|
||||
this.saveTrigger.subscribe(() =>
|
||||
Remote.saveContactsSyncData(
|
||||
null,
|
||||
ContactUserStore.enableSync(),
|
||||
ContactUserStore.syncUrl(),
|
||||
ContactUserStore.syncUser(),
|
||||
ContactUserStore.syncPass()
|
||||
)
|
||||
Remote.request('SaveContactsSyncData', null, {
|
||||
Enable: ContactUserStore.enableSync() ? 1 : 0,
|
||||
Url: ContactUserStore.syncUrl(),
|
||||
User: ContactUserStore.syncUser(),
|
||||
Password: ContactUserStore.syncPass()
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ export class FiltersUserSettings /*extends AbstractViewSettings*/ {
|
|||
this.loading(true);
|
||||
this.serverError(false);
|
||||
|
||||
Remote.filtersGet((iError, data) => {
|
||||
Remote.request('Filters', (iError, data) => {
|
||||
this.loading(false);
|
||||
this.scripts([]);
|
||||
|
||||
|
@ -69,7 +69,7 @@ export class FiltersUserSettings /*extends AbstractViewSettings*/ {
|
|||
|
||||
deleteScript(script) {
|
||||
this.serverError(false);
|
||||
Remote.filtersScriptDelete(
|
||||
Remote.request('FiltersScriptDelete',
|
||||
(iError, data) => {
|
||||
if (iError) {
|
||||
this.setError((data && data.ErrorMessageAdditional) || getNotification(iError));
|
||||
|
@ -78,14 +78,14 @@ export class FiltersUserSettings /*extends AbstractViewSettings*/ {
|
|||
delegateRunOnDestroy(script);
|
||||
}
|
||||
},
|
||||
script.name()
|
||||
{name:script.name()}
|
||||
);
|
||||
}
|
||||
|
||||
toggleScript(script) {
|
||||
let name = script.active() ? '' : script.name();
|
||||
this.serverError(false);
|
||||
Remote.filtersScriptActivate(
|
||||
Remote.request('FiltersScriptActivate',
|
||||
(iError, data) => {
|
||||
if (iError) {
|
||||
this.setError((data && data.ErrorMessageAdditional) || iError)
|
||||
|
@ -93,7 +93,7 @@ export class FiltersUserSettings /*extends AbstractViewSettings*/ {
|
|||
this.scripts.forEach(script => script.active(script.name() === name));
|
||||
}
|
||||
},
|
||||
name
|
||||
{name:name}
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -73,7 +73,10 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
Local.set(ClientSideKeyName.FoldersLashHash, '');
|
||||
|
||||
rl.app.foldersPromisesActionHelper(
|
||||
Remote.folderRename(folder.fullName, nameToEdit),
|
||||
Remote.post('FolderRename', FolderUserStore.foldersRenaming, {
|
||||
Folder: folder.fullName,
|
||||
NewFolderName: nameToEdit
|
||||
}),
|
||||
Notification.CantRenameFolder
|
||||
);
|
||||
|
||||
|
@ -119,9 +122,9 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
Local.set(ClientSideKeyName.FoldersLashHash, '');
|
||||
|
||||
// rl.app.foldersPromisesActionHelper
|
||||
Remote.abort('Folders')
|
||||
.folderDelete(folderToRemove.fullName)
|
||||
.then(
|
||||
Remote.abort('Folders').post('FolderDelete', FolderUserStore.foldersDeleting, {
|
||||
Folder: folderToRemove.fullName
|
||||
}).then(
|
||||
() => {
|
||||
folderToRemove.selectable(false)
|
||||
removeFolderFromCacheList(folderToRemove.fullName);
|
||||
|
@ -150,13 +153,19 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
toggleFolderSubscription(folder) {
|
||||
let subscribe = !folder.subscribed();
|
||||
Local.set(ClientSideKeyName.FoldersLashHash, '');
|
||||
Remote.folderSetSubscribe(null, folder.fullName, subscribe);
|
||||
Remote.request('FolderSubscribe', null, {
|
||||
Folder: folder.fullName,
|
||||
Subscribe: subscribe ? 1 : 0
|
||||
});
|
||||
folder.subscribed(subscribe);
|
||||
}
|
||||
|
||||
toggleFolderCheckable(folder) {
|
||||
let checkable = !folder.checkable();
|
||||
Remote.folderSetCheckable(null, folder.fullName, checkable);
|
||||
Remote.request('FolderCheckable', null, {
|
||||
Folder: folder.fullName,
|
||||
Checkable: checkable ? 1 : 0
|
||||
});
|
||||
folder.checkable(checkable);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ export class ThemesUserSettings /*extends AbstractViewSettings*/ {
|
|||
|
||||
clearBackground() {
|
||||
if (this.capaUserBackground()) {
|
||||
Remote.clearUserBackground(() => {
|
||||
Remote.request('ClearUserBackground', () => {
|
||||
this.background.name('');
|
||||
this.background.hash('');
|
||||
});
|
||||
|
|
|
@ -27,10 +27,10 @@ ContactUserStore.sync = fResultFunc => {
|
|||
&& !ContactUserStore.syncing()
|
||||
) {
|
||||
ContactUserStore.syncing(true);
|
||||
Remote.contactsSync((iError, oData) => {
|
||||
Remote.request('ContactsSync', (iError, oData) => {
|
||||
ContactUserStore.syncing(false);
|
||||
fResultFunc && fResultFunc(iError, oData);
|
||||
});
|
||||
}, null, 200000);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -167,6 +167,6 @@ export const FolderUserStore = new class {
|
|||
Archive: FolderUserStore.archiveFolder()
|
||||
};
|
||||
forEachObjectEntry(folders, (k,v)=>Settings.set(k+'Folder',v));
|
||||
rl.app.Remote.saveSystemFolders(null, folders);
|
||||
rl.app.Remote.request('SystemFoldersUpdate', null, folders);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -43,8 +43,7 @@ class AccountPopupView extends AbstractViewPopup {
|
|||
|
||||
this.submitRequest(true);
|
||||
|
||||
Remote.accountSetup(
|
||||
(iError, data) => {
|
||||
Remote.request('AccountSetup', (iError, data) => {
|
||||
this.submitRequest(false);
|
||||
if (iError) {
|
||||
this.submitError(getNotification(iError));
|
||||
|
@ -53,10 +52,11 @@ class AccountPopupView extends AbstractViewPopup {
|
|||
rl.app.accountsAndIdentities();
|
||||
this.cancelCommand();
|
||||
}
|
||||
},
|
||||
this.email(),
|
||||
this.password(),
|
||||
this.isNew()
|
||||
}, {
|
||||
Email: this.email(),
|
||||
Password: this.password(),
|
||||
New: this.isNew() ? 1 : 0
|
||||
}
|
||||
);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -415,7 +415,7 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
setFolderHash(this.draftsFolder(), '');
|
||||
setFolderHash(sSentFolder, '');
|
||||
|
||||
Remote.sendMessage(
|
||||
Remote.request('SendMessage',
|
||||
(iError, data) => {
|
||||
this.sending(false);
|
||||
if (this.modalVisibility()) {
|
||||
|
@ -434,7 +434,8 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
}
|
||||
this.reloadDraftFolder();
|
||||
},
|
||||
this.getMessageRequestParams(sSentFolder)
|
||||
this.getMessageRequestParams(sSentFolder),
|
||||
30000
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -451,7 +452,7 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
|
||||
setFolderHash(FolderUserStore.draftsFolder(), '');
|
||||
|
||||
Remote.saveMessage(
|
||||
Remote.request('SaveMessage',
|
||||
(iError, oData) => {
|
||||
let result = false;
|
||||
|
||||
|
@ -486,7 +487,8 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
|
||||
this.reloadDraftFolder();
|
||||
},
|
||||
this.getMessageRequestParams(FolderUserStore.draftsFolder())
|
||||
this.getMessageRequestParams(FolderUserStore.draftsFolder()),
|
||||
200000
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1016,30 +1018,36 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
|
||||
const downloads = this.getAttachmentsDownloadsForUpload();
|
||||
if (arrayLength(downloads)) {
|
||||
Remote.messageUploadAttachments((iError, oData) => {
|
||||
if (!iError) {
|
||||
forEachObjectEntry(oData.Result, (tempName, id) => {
|
||||
const attachment = this.getAttachmentById(id);
|
||||
if (attachment) {
|
||||
attachment.tempName(tempName);
|
||||
attachment
|
||||
.waiting(false)
|
||||
.uploading(false)
|
||||
.complete(true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.attachments.forEach(attachment => {
|
||||
if (attachment && attachment.fromMessage) {
|
||||
attachment
|
||||
.waiting(false)
|
||||
.uploading(false)
|
||||
.complete(true)
|
||||
.error(getUploadErrorDescByCode(UploadErrorCode.NoFileUploaded));
|
||||
}
|
||||
});
|
||||
}
|
||||
}, downloads);
|
||||
Remote.request('MessageUploadAttachments',
|
||||
(iError, oData) => {
|
||||
if (!iError) {
|
||||
forEachObjectEntry(oData.Result, (tempName, id) => {
|
||||
const attachment = this.getAttachmentById(id);
|
||||
if (attachment) {
|
||||
attachment.tempName(tempName);
|
||||
attachment
|
||||
.waiting(false)
|
||||
.uploading(false)
|
||||
.complete(true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.attachments.forEach(attachment => {
|
||||
if (attachment && attachment.fromMessage) {
|
||||
attachment
|
||||
.waiting(false)
|
||||
.uploading(false)
|
||||
.complete(true)
|
||||
.error(getUploadErrorDescByCode(UploadErrorCode.NoFileUploaded));
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
Attachments: downloads
|
||||
},
|
||||
999000
|
||||
);
|
||||
}
|
||||
|
||||
if (identity) {
|
||||
|
|
|
@ -217,7 +217,7 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
|
||||
const requestUid = Jua.randomId();
|
||||
|
||||
Remote.contactSave(
|
||||
Remote.request('ContactSave',
|
||||
(iError, oData) => {
|
||||
let res = false;
|
||||
this.viewSaving(false);
|
||||
|
@ -243,10 +243,11 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
this.watchDirty(false);
|
||||
setTimeout(() => this.viewSaveTrigger(SaveSettingsStep.Idle), 1000);
|
||||
}
|
||||
},
|
||||
requestUid,
|
||||
this.viewID(),
|
||||
this.viewProperties.map(oItem => oItem.toJSON())
|
||||
}, {
|
||||
RequestUid: requestUid,
|
||||
Uid: this.viewID(),
|
||||
Properties: this.viewProperties.map(oItem => oItem.toJSON())
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -355,14 +356,17 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
|
||||
deleteSelectedContacts() {
|
||||
if (this.contactsCheckedOrSelected().length) {
|
||||
Remote.contactsDelete((iError, oData) => {
|
||||
if (500 < (!iError && oData && oData.Time ? pInt(oData.Time) : 0)) {
|
||||
this.reloadContactList(this.bDropPageAfterDelete);
|
||||
} else {
|
||||
setTimeout(() => this.reloadContactList(this.bDropPageAfterDelete), 500);
|
||||
Remote.request('ContactsDelete',
|
||||
(iError, oData) => {
|
||||
if (500 < (!iError && oData && oData.Time ? pInt(oData.Time) : 0)) {
|
||||
this.reloadContactList(this.bDropPageAfterDelete);
|
||||
} else {
|
||||
setTimeout(() => this.reloadContactList(this.bDropPageAfterDelete), 500);
|
||||
}
|
||||
}, {
|
||||
Uids: this.contactsCheckedOrSelectedUids().join(',')
|
||||
}
|
||||
}, this.contactsCheckedOrSelectedUids());
|
||||
|
||||
);
|
||||
this.removeCheckedOrSelectedContactsFromList();
|
||||
}
|
||||
}
|
||||
|
@ -415,7 +419,7 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
ContactUserStore.loading(true);
|
||||
Remote.contacts(
|
||||
Remote.request('Contacts',
|
||||
(iError, data) => {
|
||||
let count = 0,
|
||||
list = [];
|
||||
|
@ -438,9 +442,14 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
ContactUserStore.loading(false);
|
||||
this.viewClearSearch(!!this.search());
|
||||
},
|
||||
offset,
|
||||
CONTACTS_PER_PAGE,
|
||||
this.search()
|
||||
{
|
||||
Offset: offset,
|
||||
Limit: CONTACTS_PER_PAGE,
|
||||
Search: this.search()
|
||||
},
|
||||
null,
|
||||
'',
|
||||
['Contacts']
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ class FolderClearPopupView extends AbstractViewPopup {
|
|||
|
||||
setFolderHash(folderToClear.fullName, '');
|
||||
|
||||
Remote.folderClear(iError => {
|
||||
Remote.request('FolderClear', iError => {
|
||||
this.clearingProcess(false);
|
||||
if (iError) {
|
||||
this.clearingError(getNotification(iError));
|
||||
|
@ -62,7 +62,9 @@ class FolderClearPopupView extends AbstractViewPopup {
|
|||
rl.app.reloadMessageList(true);
|
||||
this.cancelCommand();
|
||||
}
|
||||
}, folderToClear.fullName);
|
||||
}, {
|
||||
Folder: folderToClear.fullName
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,10 @@ class FolderCreatePopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
rl.app.foldersPromisesActionHelper(
|
||||
Remote.folderCreate(this.folderName(), parentFolderName),
|
||||
Remote.post('FolderCreate', FolderUserStore.foldersCreating, {
|
||||
Folder: this.folderName(),
|
||||
Parent: parentFolderName
|
||||
}),
|
||||
Notification.CantCreateFolder
|
||||
);
|
||||
|
||||
|
|
|
@ -94,8 +94,7 @@ class IdentityPopupView extends AbstractViewPopup {
|
|||
|
||||
this.submitRequest(true);
|
||||
|
||||
Remote.identityUpdate(
|
||||
iError => {
|
||||
Remote.request('IdentityUpdate', iError => {
|
||||
this.submitRequest(false);
|
||||
if (iError) {
|
||||
this.submitError(getNotification(iError));
|
||||
|
@ -103,14 +102,15 @@ class IdentityPopupView extends AbstractViewPopup {
|
|||
rl.app.accountsAndIdentities();
|
||||
this.cancelCommand();
|
||||
}
|
||||
},
|
||||
this.id,
|
||||
this.email(),
|
||||
this.name(),
|
||||
this.replyTo(),
|
||||
this.bcc(),
|
||||
this.signature(),
|
||||
this.signatureInsertBefore()
|
||||
}, {
|
||||
Id: this.id,
|
||||
Email: this.email(),
|
||||
Name: this.name(),
|
||||
ReplyTo: this.replyTo(),
|
||||
Bcc: this.bcc(),
|
||||
Signature: this.signature(),
|
||||
SignatureInsertBefore: this.signatureInsertBefore() ? 1 : 0
|
||||
}
|
||||
);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -57,7 +57,7 @@ class SieveScriptPopupView extends AbstractViewPopup {
|
|||
script.body(script.filtersToRaw());
|
||||
}
|
||||
|
||||
Remote.filtersScriptSave(
|
||||
Remote.request('FiltersScriptSave',
|
||||
(iError, data) => {
|
||||
self.saving = false;
|
||||
|
||||
|
@ -70,7 +70,7 @@ class SieveScriptPopupView extends AbstractViewPopup {
|
|||
script.hasChanges(false);
|
||||
}
|
||||
},
|
||||
script
|
||||
script.toJson()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ class LoginUserView extends AbstractViewLogin {
|
|||
this.submitRequest(true);
|
||||
data.set('Language', this.bSendLanguage ? this.language() : '');
|
||||
data.set('SignMe', this.signMe() ? 1 : 0);
|
||||
Remote.defaultRequest(
|
||||
Remote.request('Login',
|
||||
(iError, oData) => {
|
||||
if (iError) {
|
||||
this.submitRequest(false);
|
||||
|
@ -114,7 +114,7 @@ class LoginUserView extends AbstractViewLogin {
|
|||
// rl.route.reload();
|
||||
}
|
||||
},
|
||||
'Login', data
|
||||
data
|
||||
);
|
||||
|
||||
Local.set(ClientSideKeyName.LastSignMe, this.signMe() ? '-1-' : '-0-');
|
||||
|
|
|
@ -467,55 +467,50 @@ export class MailMessageList extends AbstractViewRight {
|
|||
if (folder) {
|
||||
switch (iSetAction) {
|
||||
case MessageSetAction.SetSeen:
|
||||
folder = getFolderFromCacheList(sFolderFullName);
|
||||
if (folder) {
|
||||
MessageUserStore.list.forEach(message => {
|
||||
if (message.isUnseen()) {
|
||||
++cnt;
|
||||
}
|
||||
|
||||
message.isUnseen(false);
|
||||
uids.push(message.uid);
|
||||
});
|
||||
|
||||
if (iThreadUid) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() - cnt);
|
||||
if (0 > folder.messageCountUnread()) {
|
||||
folder.messageCountUnread(0);
|
||||
}
|
||||
} else {
|
||||
folder.messageCountUnread(0);
|
||||
MessageUserStore.list.forEach(message => {
|
||||
if (message.isUnseen()) {
|
||||
++cnt;
|
||||
}
|
||||
|
||||
MessageFlagsCache.clearFolder(sFolderFullName);
|
||||
message.isUnseen(false);
|
||||
uids.push(message.uid);
|
||||
});
|
||||
|
||||
if (iThreadUid) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() - cnt);
|
||||
if (0 > folder.messageCountUnread()) {
|
||||
folder.messageCountUnread(0);
|
||||
}
|
||||
} else {
|
||||
folder.messageCountUnread(0);
|
||||
}
|
||||
|
||||
MessageFlagsCache.clearFolder(sFolderFullName);
|
||||
|
||||
Remote.messageSetSeenToAll(null, sFolderFullName, true, iThreadUid ? uids : null);
|
||||
break;
|
||||
|
||||
case MessageSetAction.UnsetSeen:
|
||||
folder = getFolderFromCacheList(sFolderFullName);
|
||||
if (folder) {
|
||||
MessageUserStore.list.forEach(message => {
|
||||
if (!message.isUnseen()) {
|
||||
++cnt;
|
||||
}
|
||||
|
||||
message.isUnseen(true);
|
||||
uids.push(message.uid);
|
||||
});
|
||||
|
||||
if (iThreadUid) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() + cnt);
|
||||
if (folder.messageCountAll() < folder.messageCountUnread()) {
|
||||
folder.messageCountUnread(folder.messageCountAll());
|
||||
}
|
||||
} else {
|
||||
folder.messageCountUnread(folder.messageCountAll());
|
||||
MessageUserStore.list.forEach(message => {
|
||||
if (!message.isUnseen()) {
|
||||
++cnt;
|
||||
}
|
||||
|
||||
MessageFlagsCache.clearFolder(sFolderFullName);
|
||||
message.isUnseen(true);
|
||||
uids.push(message.uid);
|
||||
});
|
||||
|
||||
if (iThreadUid) {
|
||||
folder.messageCountUnread(folder.messageCountUnread() + cnt);
|
||||
if (folder.messageCountAll() < folder.messageCountUnread()) {
|
||||
folder.messageCountUnread(folder.messageCountAll());
|
||||
}
|
||||
} else {
|
||||
folder.messageCountUnread(folder.messageCountAll());
|
||||
}
|
||||
|
||||
MessageFlagsCache.clearFolder(sFolderFullName);
|
||||
|
||||
Remote.messageSetSeenToAll(null, sFolderFullName, false, iThreadUid ? uids : null);
|
||||
break;
|
||||
// no default
|
||||
|
|
|
@ -598,14 +598,13 @@ export class MailMessageView extends AbstractViewRight {
|
|||
readReceipt() {
|
||||
let oMessage = MessageUserStore.message()
|
||||
if (oMessage && oMessage.readReceipt()) {
|
||||
Remote.sendReadReceiptMessage(
|
||||
null,
|
||||
oMessage.folder,
|
||||
oMessage.uid,
|
||||
oMessage.readReceipt(),
|
||||
i18n('READ_RECEIPT/SUBJECT', { SUBJECT: oMessage.subject() }),
|
||||
i18n('READ_RECEIPT/BODY', { 'READ-RECEIPT': AccountUserStore.email() })
|
||||
);
|
||||
Remote.request('SendReadReceiptMessage', null, {
|
||||
MessageFolder: oMessage.folder,
|
||||
MessageUid: oMessage.uid,
|
||||
ReadReceipt: oMessage.readReceipt(),
|
||||
Subject: i18n('READ_RECEIPT/SUBJECT', { SUBJECT: oMessage.subject() }),
|
||||
Text: i18n('READ_RECEIPT/BODY', { 'READ-RECEIPT': AccountUserStore.email() })
|
||||
});
|
||||
|
||||
oMessage.isReadReceipt(true);
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ export class SystemDropDownUserView extends AbstractViewRight {
|
|||
AccountUserStore.loading(true);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
Remote.defaultRequest(
|
||||
Remote.request('AccountSwitch',
|
||||
(iError/*, oData*/) => {
|
||||
if (iError) {
|
||||
AccountUserStore.loading(false);
|
||||
|
@ -86,7 +86,7 @@ export class SystemDropDownUserView extends AbstractViewRight {
|
|||
// rl.route.reload();
|
||||
location.reload();
|
||||
}
|
||||
}, 'AccountSwitch', {Email:account.email}
|
||||
}, {Email:account.email}
|
||||
);
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -439,43 +439,6 @@ trait User
|
|||
return $this->DefaultResponse(__FUNCTION__, $aResult);
|
||||
}
|
||||
|
||||
public function DoComposeUploadExternals() : array
|
||||
{
|
||||
$oAccount = $this->getAccountFromToken();
|
||||
|
||||
$mResult = false;
|
||||
$aExternals = $this->GetActionParam('Externals', array());
|
||||
if (\is_array($aExternals) && \count($aExternals))
|
||||
{
|
||||
$oHttp = \MailSo\Base\Http::SingletonInstance();
|
||||
|
||||
$mResult = array();
|
||||
foreach ($aExternals as $sUrl)
|
||||
{
|
||||
$mResult[$sUrl] = '';
|
||||
|
||||
$sTempName = \md5($sUrl);
|
||||
|
||||
$iCode = 0;
|
||||
$sContentType = '';
|
||||
|
||||
$rFile = $this->FilesProvider()->GetFile($oAccount, $sTempName, 'wb+');
|
||||
if ($rFile && $oHttp->SaveUrlToFile($sUrl, $rFile, '', $sContentType, $iCode, $this->Logger(), 60,
|
||||
$this->Config()->Get('labs', 'curl_proxy', ''), $this->Config()->Get('labs', 'curl_proxy_auth', '')))
|
||||
{
|
||||
$mResult[$sUrl] = $sTempName;
|
||||
}
|
||||
|
||||
if (\is_resource($rFile))
|
||||
{
|
||||
\fclose($rFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->DefaultResponse(__FUNCTION__, $mResult);
|
||||
}
|
||||
|
||||
public function DoClearUserBackground() : array
|
||||
{
|
||||
$oAccount = $this->getAccountFromToken();
|
||||
|
|
Loading…
Add table
Reference in a new issue