mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-29 20:19:22 +03:00
Code refactoring
This commit is contained in:
parent
31860420cb
commit
4eaef23cc7
52 changed files with 99 additions and 103 deletions
311
dev/Remote/AbstractAjax.js
Normal file
311
dev/Remote/AbstractAjax.js
Normal file
|
|
@ -0,0 +1,311 @@
|
|||
|
||||
(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
var
|
||||
window = require('window'),
|
||||
_ = require('_'),
|
||||
$ = require('$'),
|
||||
|
||||
Consts = require('Common/Consts'),
|
||||
Enums = require('Common/Enums'),
|
||||
Globals = require('Common/Globals'),
|
||||
Utils = require('Common/Utils'),
|
||||
Plugins = require('Common/Plugins'),
|
||||
Links = require('Common/Links'),
|
||||
|
||||
Settings = require('Storage/Settings')
|
||||
;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function AbstractAjaxRemote()
|
||||
{
|
||||
this.oRequests = {};
|
||||
}
|
||||
|
||||
AbstractAjaxRemote.prototype.oRequests = {};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sRequestAction
|
||||
* @param {string} sType
|
||||
* @param {?AjaxJsonDefaultResponse} oData
|
||||
* @param {boolean} bCached
|
||||
* @param {*=} oRequestParameters
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.defaultResponse = function (fCallback, sRequestAction, sType, oData, bCached, oRequestParameters)
|
||||
{
|
||||
var
|
||||
fCall = function () {
|
||||
if (Enums.StorageResultType.Success !== sType && Globals.bUnload)
|
||||
{
|
||||
sType = Enums.StorageResultType.Unload;
|
||||
}
|
||||
|
||||
if (Enums.StorageResultType.Success === sType && oData && !oData.Result)
|
||||
{
|
||||
if (oData && -1 < Utils.inArray(oData.ErrorCode, [
|
||||
Enums.Notification.AuthError, Enums.Notification.AccessError,
|
||||
Enums.Notification.ConnectionError, Enums.Notification.DomainNotAllowed, Enums.Notification.AccountNotAllowed,
|
||||
Enums.Notification.MailServerError, Enums.Notification.UnknownNotification, Enums.Notification.UnknownError
|
||||
]))
|
||||
{
|
||||
Globals.iAjaxErrorCount++;
|
||||
}
|
||||
|
||||
if (oData && Enums.Notification.InvalidToken === oData.ErrorCode)
|
||||
{
|
||||
Globals.iTokenErrorCount++;
|
||||
}
|
||||
|
||||
if (Consts.Values.TokenErrorLimit < Globals.iTokenErrorCount)
|
||||
{
|
||||
if (Globals.__APP__)
|
||||
{
|
||||
Globals.__APP__.loginAndLogoutReload(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (oData.ClearAuth || oData.Logout || Consts.Values.AjaxErrorLimit < Globals.iAjaxErrorCount)
|
||||
{
|
||||
if (Globals.__APP__)
|
||||
{
|
||||
Globals.__APP__.clearClientSideToken();
|
||||
|
||||
if (!oData.ClearAuth)
|
||||
{
|
||||
Globals.__APP__.loginAndLogoutReload(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Enums.StorageResultType.Success === sType && oData && oData.Result)
|
||||
{
|
||||
Globals.iAjaxErrorCount = 0;
|
||||
Globals.iTokenErrorCount = 0;
|
||||
}
|
||||
|
||||
if (fCallback)
|
||||
{
|
||||
Plugins.runHook('ajax-default-response', [sRequestAction, Enums.StorageResultType.Success === sType ? oData : null, sType, bCached, oRequestParameters]);
|
||||
|
||||
fCallback(
|
||||
sType,
|
||||
Enums.StorageResultType.Success === sType ? oData : null,
|
||||
bCached,
|
||||
sRequestAction,
|
||||
oRequestParameters
|
||||
);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
switch (sType)
|
||||
{
|
||||
case 'success':
|
||||
sType = Enums.StorageResultType.Success;
|
||||
break;
|
||||
case 'abort':
|
||||
sType = Enums.StorageResultType.Abort;
|
||||
break;
|
||||
default:
|
||||
sType = Enums.StorageResultType.Error;
|
||||
break;
|
||||
}
|
||||
|
||||
if (Enums.StorageResultType.Error === sType)
|
||||
{
|
||||
_.delay(fCall, 300);
|
||||
}
|
||||
else
|
||||
{
|
||||
fCall();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fResultCallback
|
||||
* @param {Object} oParameters
|
||||
* @param {?number=} iTimeOut = 20000
|
||||
* @param {string=} sGetAdd = ''
|
||||
* @param {Array=} aAbortActions = []
|
||||
* @return {jQuery.jqXHR}
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.ajaxRequest = function (fResultCallback, oParameters, iTimeOut, sGetAdd, aAbortActions)
|
||||
{
|
||||
var
|
||||
self = this,
|
||||
bPost = '' === sGetAdd,
|
||||
oHeaders = {},
|
||||
iStart = (new window.Date()).getTime(),
|
||||
oDefAjax = null,
|
||||
sAction = ''
|
||||
;
|
||||
|
||||
oParameters = oParameters || {};
|
||||
iTimeOut = Utils.isNormal(iTimeOut) ? iTimeOut : 20000;
|
||||
sGetAdd = Utils.isUnd(sGetAdd) ? '' : Utils.pString(sGetAdd);
|
||||
aAbortActions = Utils.isArray(aAbortActions) ? aAbortActions : [];
|
||||
|
||||
sAction = oParameters.Action || '';
|
||||
|
||||
if (sAction && 0 < aAbortActions.length)
|
||||
{
|
||||
_.each(aAbortActions, function (sActionToAbort) {
|
||||
if (self.oRequests[sActionToAbort])
|
||||
{
|
||||
self.oRequests[sActionToAbort].__aborted = true;
|
||||
if (self.oRequests[sActionToAbort].abort)
|
||||
{
|
||||
self.oRequests[sActionToAbort].abort();
|
||||
}
|
||||
self.oRequests[sActionToAbort] = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (bPost)
|
||||
{
|
||||
oParameters['XToken'] = Settings.settingsGet('Token');
|
||||
}
|
||||
|
||||
oDefAjax = $.ajax({
|
||||
'type': bPost ? 'POST' : 'GET',
|
||||
'url': Links.ajax(sGetAdd),
|
||||
'async': true,
|
||||
'dataType': 'json',
|
||||
'data': bPost ? oParameters : {},
|
||||
'headers': oHeaders,
|
||||
'timeout': iTimeOut,
|
||||
'global': true
|
||||
});
|
||||
|
||||
oDefAjax.always(function (oData, sType) {
|
||||
|
||||
var bCached = false;
|
||||
if (oData && oData['Time'])
|
||||
{
|
||||
bCached = Utils.pInt(oData['Time']) > (new window.Date()).getTime() - iStart;
|
||||
}
|
||||
|
||||
if (sAction && self.oRequests[sAction])
|
||||
{
|
||||
if (self.oRequests[sAction].__aborted)
|
||||
{
|
||||
sType = 'abort';
|
||||
}
|
||||
|
||||
self.oRequests[sAction] = null;
|
||||
}
|
||||
|
||||
self.defaultResponse(fResultCallback, sAction, sType, oData, bCached, oParameters);
|
||||
});
|
||||
|
||||
if (sAction && 0 < aAbortActions.length && -1 < Utils.inArray(sAction, aAbortActions))
|
||||
{
|
||||
if (this.oRequests[sAction])
|
||||
{
|
||||
this.oRequests[sAction].__aborted = true;
|
||||
if (this.oRequests[sAction].abort)
|
||||
{
|
||||
this.oRequests[sAction].abort();
|
||||
}
|
||||
this.oRequests[sAction] = null;
|
||||
}
|
||||
|
||||
this.oRequests[sAction] = oDefAjax;
|
||||
}
|
||||
|
||||
return oDefAjax;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sAction
|
||||
* @param {Object=} oParameters
|
||||
* @param {?number=} iTimeout
|
||||
* @param {string=} sGetAdd = ''
|
||||
* @param {Array=} aAbortActions = []
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.defaultRequest = function (fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions)
|
||||
{
|
||||
oParameters = oParameters || {};
|
||||
oParameters.Action = sAction;
|
||||
|
||||
sGetAdd = Utils.pString(sGetAdd);
|
||||
|
||||
Plugins.runHook('ajax-default-request', [sAction, oParameters, sGetAdd]);
|
||||
|
||||
return this.ajaxRequest(fCallback, oParameters,
|
||||
Utils.isUnd(iTimeout) ? Consts.Defaults.DefaultAjaxTimeout : Utils.pInt(iTimeout), sGetAdd, aAbortActions);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.noop = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Noop');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sMessage
|
||||
* @param {string} sFileName
|
||||
* @param {number} iLineNo
|
||||
* @param {string} sLocation
|
||||
* @param {string} sHtmlCapa
|
||||
* @param {number} iTime
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.jsError = function (fCallback, sMessage, sFileName, iLineNo, sLocation, sHtmlCapa, iTime)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'JsError', {
|
||||
'Message': sMessage,
|
||||
'FileName': sFileName,
|
||||
'LineNo': iLineNo,
|
||||
'Location': sLocation,
|
||||
'HtmlCapa': sHtmlCapa,
|
||||
'TimeOnPage': iTime
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sType
|
||||
* @param {Array=} mData = null
|
||||
* @param {boolean=} bIsError = false
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.jsInfo = function (fCallback, sType, mData, bIsError)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'JsInfo', {
|
||||
'Type': sType,
|
||||
'Data': mData,
|
||||
'IsError': (Utils.isUnd(bIsError) ? false : !!bIsError) ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.getPublicKey = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'GetPublicKey');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sVersion
|
||||
*/
|
||||
AbstractAjaxRemote.prototype.jsVersion = function (fCallback, sVersion)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Version', {
|
||||
'Version': sVersion
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = AbstractAjaxRemote;
|
||||
|
||||
}());
|
||||
294
dev/Remote/Admin/Ajax.js
Normal file
294
dev/Remote/Admin/Ajax.js
Normal file
|
|
@ -0,0 +1,294 @@
|
|||
|
||||
(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
var
|
||||
_ = require('_'),
|
||||
|
||||
AbstractAjaxRemote = require('Remote/AbstractAjax')
|
||||
;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractAjaxRemote
|
||||
*/
|
||||
function RemoteAdminStorage()
|
||||
{
|
||||
AbstractAjaxRemote.call(this);
|
||||
|
||||
this.oRequests = {};
|
||||
}
|
||||
|
||||
_.extend(RemoteAdminStorage.prototype, AbstractAjaxRemote.prototype);
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sLogin
|
||||
* @param {string} sPassword
|
||||
*/
|
||||
RemoteAdminStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminLogin', {
|
||||
'Login': sLogin,
|
||||
'Password': sPassword
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.adminLogout = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminLogout');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {?} oData
|
||||
*/
|
||||
RemoteAdminStorage.prototype.saveAdminConfig = function (fCallback, oData)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.domainList = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminDomainList');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.pluginList = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPluginList');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.packagesList = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPackagesList');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.coreData = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminCoreData');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.updateCoreData = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oPackage
|
||||
*/
|
||||
RemoteAdminStorage.prototype.packageInstall = function (fCallback, oPackage)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPackageInstall', {
|
||||
'Id': oPackage.id,
|
||||
'Type': oPackage.type,
|
||||
'File': oPackage.file
|
||||
}, 60000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oPackage
|
||||
*/
|
||||
RemoteAdminStorage.prototype.packageDelete = function (fCallback, oPackage)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPackageDelete', {
|
||||
'Id': oPackage.id
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sName
|
||||
*/
|
||||
RemoteAdminStorage.prototype.domain = function (fCallback, sName)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminDomainLoad', {
|
||||
'Name': sName
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sName
|
||||
*/
|
||||
RemoteAdminStorage.prototype.plugin = function (fCallback, sName)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPluginLoad', {
|
||||
'Name': sName
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sName
|
||||
*/
|
||||
RemoteAdminStorage.prototype.domainDelete = function (fCallback, sName)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminDomainDelete', {
|
||||
'Name': sName
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sName
|
||||
* @param {boolean} bDisabled
|
||||
*/
|
||||
RemoteAdminStorage.prototype.domainDisable = function (fCallback, sName, bDisabled)
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'AdminDomainDisable', {
|
||||
'Name': sName,
|
||||
'Disabled': !!bDisabled ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oConfig
|
||||
*/
|
||||
RemoteAdminStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig)
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {boolean} bForce
|
||||
*/
|
||||
RemoteAdminStorage.prototype.licensing = function (fCallback, bForce)
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'AdminLicensing', {
|
||||
'Force' : bForce ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sDomain
|
||||
* @param {string} sKey
|
||||
*/
|
||||
RemoteAdminStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey)
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'AdminLicensingActivate', {
|
||||
'Domain' : sDomain,
|
||||
'Key' : sKey
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sName
|
||||
* @param {boolean} bDisabled
|
||||
*/
|
||||
RemoteAdminStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled)
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'AdminPluginDisable', {
|
||||
'Name': sName,
|
||||
'Disabled': !!bDisabled ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
RemoteAdminStorage.prototype.createOrUpdateDomain = function (fCallback,
|
||||
bCreate, sName,
|
||||
sIncHost, iIncPort, sIncSecure, bIncShortLogin,
|
||||
bUseSieve, sSieveAllowRaw, sSieveHost, iSievePort, sSieveSecure,
|
||||
sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, bOutPhpMail,
|
||||
sWhiteList)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminDomainSave', {
|
||||
'Create': bCreate ? '1' : '0',
|
||||
'Name': sName,
|
||||
|
||||
'IncHost': sIncHost,
|
||||
'IncPort': iIncPort,
|
||||
'IncSecure': sIncSecure,
|
||||
'IncShortLogin': bIncShortLogin ? '1' : '0',
|
||||
|
||||
'UseSieve': bUseSieve ? '1' : '0',
|
||||
'SieveAllowRaw': sSieveAllowRaw ? '1' : '0',
|
||||
'SieveHost': sSieveHost,
|
||||
'SievePort': iSievePort,
|
||||
'SieveSecure': sSieveSecure,
|
||||
|
||||
'OutHost': sOutHost,
|
||||
'OutPort': iOutPort,
|
||||
'OutSecure': sOutSecure,
|
||||
'OutShortLogin': bOutShortLogin ? '1' : '0',
|
||||
'OutAuth': bOutAuth ? '1' : '0',
|
||||
'OutUsePhpMail': bOutPhpMail ? '1' : '0',
|
||||
|
||||
'WhiteList': sWhiteList
|
||||
});
|
||||
};
|
||||
|
||||
RemoteAdminStorage.prototype.testConnectionForDomain = function (fCallback, sName,
|
||||
sIncHost, iIncPort, sIncSecure,
|
||||
bUseSieve, sSieveHost, iSievePort, sSieveSecure,
|
||||
sOutHost, iOutPort, sOutSecure, bOutAuth, bOutPhpMail)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminDomainTest', {
|
||||
'Name': sName,
|
||||
'IncHost': sIncHost,
|
||||
'IncPort': iIncPort,
|
||||
'IncSecure': sIncSecure,
|
||||
'UseSieve': bUseSieve ? '1' : '0',
|
||||
'SieveHost': sSieveHost,
|
||||
'SievePort': iSievePort,
|
||||
'SieveSecure': sSieveSecure,
|
||||
'OutHost': sOutHost,
|
||||
'OutPort': iOutPort,
|
||||
'OutSecure': sOutSecure,
|
||||
'OutAuth': bOutAuth ? '1' : '0',
|
||||
'OutUsePhpMail': bOutPhpMail ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {?} oData
|
||||
*/
|
||||
RemoteAdminStorage.prototype.testContacts = function (fCallback, oData)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminContactsTest', oData);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {?} oData
|
||||
*/
|
||||
RemoteAdminStorage.prototype.saveNewAdminPassword = function (fCallback, oData)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteAdminStorage.prototype.adminPing = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AdminPing');
|
||||
};
|
||||
|
||||
module.exports = new RemoteAdminStorage();
|
||||
|
||||
}());
|
||||
926
dev/Remote/User/Ajax.js
Normal file
926
dev/Remote/User/Ajax.js
Normal file
|
|
@ -0,0 +1,926 @@
|
|||
|
||||
(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
var
|
||||
_ = require('_'),
|
||||
|
||||
Utils = require('Common/Utils'),
|
||||
Consts = require('Common/Consts'),
|
||||
Base64 = require('Common/Base64'),
|
||||
|
||||
Cache = require('Common/Cache'),
|
||||
|
||||
Settings = require('Storage/Settings'),
|
||||
|
||||
AppStore = require('Stores/User/App'),
|
||||
SettingsStore = require('Stores/User/Settings'),
|
||||
MessageStore = require('Stores/User/Message'),
|
||||
|
||||
AbstractAjaxRemote = require('Remote/AbstractAjax')
|
||||
;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractRemoteStorage
|
||||
*/
|
||||
function RemoteUserStorage()
|
||||
{
|
||||
AbstractAjaxRemote.call(this);
|
||||
|
||||
this.oRequests = {};
|
||||
|
||||
this.sSubSubQuery = '&ss=/';
|
||||
}
|
||||
|
||||
_.extend(RemoteUserStorage.prototype, AbstractAjaxRemote.prototype);
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.folders = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Folders', {
|
||||
'SentFolder': Settings.settingsGet('SentFolder'),
|
||||
'DraftFolder': Settings.settingsGet('DraftFolder'),
|
||||
'SpamFolder': Settings.settingsGet('SpamFolder'),
|
||||
'TrashFolder': Settings.settingsGet('TrashFolder'),
|
||||
'ArchiveFolder': Settings.settingsGet('ArchiveFolder')
|
||||
}, null, '', ['Folders']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sEmail
|
||||
* @param {string} sLogin
|
||||
* @param {string} sPassword
|
||||
* @param {boolean} bSignMe
|
||||
* @param {string=} sLanguage
|
||||
* @param {string=} sAdditionalCode
|
||||
* @param {boolean=} bAdditionalCodeSignMe
|
||||
*/
|
||||
RemoteUserStorage.prototype.login = function (fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Login', {
|
||||
'Email': sEmail,
|
||||
'Login': sLogin,
|
||||
'Password': sPassword,
|
||||
'Language': sLanguage || '',
|
||||
'AdditionalCode': sAdditionalCode || '',
|
||||
'AdditionalCodeSignMe': bAdditionalCodeSignMe ? '1' : '0',
|
||||
'SignMe': bSignMe ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.getTwoFactor = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'GetTwoFactorInfo');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.createTwoFactor = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'CreateTwoFactorSecret');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.clearTwoFactor = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.showTwoFactorSecret = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ShowTwoFactorSecret');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sCode
|
||||
*/
|
||||
RemoteUserStorage.prototype.testTwoFactor = function (fCallback, sCode)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
|
||||
'Code': sCode
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {boolean} bEnable
|
||||
*/
|
||||
RemoteUserStorage.prototype.enableTwoFactor = function (fCallback, bEnable)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'EnableTwoFactor', {
|
||||
'Enable': bEnable ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.clearTwoFactorInfo = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.contactsSync = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ContactsSync', null, Consts.Defaults.ContactsSyncAjaxTimeout);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {boolean} bEnable
|
||||
* @param {string} sUrl
|
||||
* @param {string} sUser
|
||||
* @param {string} sPassword
|
||||
*/
|
||||
RemoteUserStorage.prototype.saveContactsSyncData = function (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
|
||||
*/
|
||||
RemoteUserStorage.prototype.accountSetup = function (fCallback, sEmail, sPassword, bNew)
|
||||
{
|
||||
bNew = Utils.isUnd(bNew) ? true : !!bNew;
|
||||
|
||||
this.defaultRequest(fCallback, 'AccountSetup', {
|
||||
'Email': sEmail,
|
||||
'Password': sPassword,
|
||||
'New': bNew ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sEmailToDelete
|
||||
*/
|
||||
RemoteUserStorage.prototype.accountDelete = function (fCallback, sEmailToDelete)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AccountDelete', {
|
||||
'EmailToDelete': sEmailToDelete
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aAccounts
|
||||
* @param {Array} aIdentities
|
||||
*/
|
||||
RemoteUserStorage.prototype.accountsAndIdentitiesSortOrder = function (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
|
||||
*/
|
||||
RemoteUserStorage.prototype.identityUpdate = function (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
|
||||
*/
|
||||
RemoteUserStorage.prototype.identityDelete = function (fCallback, sIdToDelete)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'IdentityDelete', {
|
||||
'IdToDelete': sIdToDelete
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.accountsAndIdentities = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AccountsAndIdentities');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.accountsCounts = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AccountsCounts');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.filtersSave = function (fCallback,
|
||||
aFilters, sRaw, bRawIsActive)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FiltersSave', {
|
||||
'Raw': sRaw,
|
||||
'RawIsActive': bRawIsActive ? '1' : '0',
|
||||
'Filters': _.map(aFilters, function (oItem) {
|
||||
return oItem.toJson();
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.filtersGet = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Filters', {});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.templates = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Templates', {});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.templateGetById = function (fCallback, sID)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'TemplateGetByID', {
|
||||
'ID': sID
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.templateDelete = function (fCallback, sID)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'TemplateDelete', {
|
||||
'IdToDelete': sID
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.templateSetup = function (fCallback, sID, sName, sBody)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'TemplateSetup', {
|
||||
'ID': sID,
|
||||
'Name': sName,
|
||||
'Body': sBody
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {number=} iOffset = 0
|
||||
* @param {number=} iLimit = 20
|
||||
* @param {string=} sSearch = ''
|
||||
* @param {boolean=} bSilent = false
|
||||
*/
|
||||
RemoteUserStorage.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
|
||||
{
|
||||
sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
|
||||
|
||||
var
|
||||
sFolderHash = Cache.getFolderHash(sFolderFullNameRaw)
|
||||
;
|
||||
|
||||
bSilent = Utils.isUnd(bSilent) ? false : !!bSilent;
|
||||
iOffset = Utils.isUnd(iOffset) ? 0 : Utils.pInt(iOffset);
|
||||
iLimit = Utils.isUnd(iOffset) ? 20 : Utils.pInt(iLimit);
|
||||
sSearch = Utils.pString(sSearch);
|
||||
|
||||
if ('' !== sFolderHash && ('' === sSearch || -1 === sSearch.indexOf('is:')))
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'MessageList', {},
|
||||
'' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout,
|
||||
'MessageList/' + this.sSubSubQuery + Base64.urlsafe_encode([
|
||||
sFolderFullNameRaw,
|
||||
iOffset,
|
||||
iLimit,
|
||||
sSearch,
|
||||
AppStore.projectHash(),
|
||||
sFolderHash,
|
||||
Cache.getFolderInboxName() === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
|
||||
AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0',
|
||||
AppStore.threadsAllowed() && sFolderFullNameRaw === MessageStore.messageListThreadFolder() ? MessageStore.messageListThreadUids().join(',') : ''
|
||||
].join(String.fromCharCode(0))), bSilent ? [] : ['MessageList']);
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.defaultRequest(fCallback, 'MessageList', {
|
||||
'Folder': sFolderFullNameRaw,
|
||||
'Offset': iOffset,
|
||||
'Limit': iLimit,
|
||||
'Search': sSearch,
|
||||
'UidNext': Cache.getFolderInboxName() === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
|
||||
'UseThreads': AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0',
|
||||
'ExpandedThreadUid': AppStore.threadsAllowed() && sFolderFullNameRaw === MessageStore.messageListThreadFolder() ? MessageStore.messageListThreadUids().join(',') : ''
|
||||
}, '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout, '', bSilent ? [] : ['MessageList']);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aDownloads
|
||||
*/
|
||||
RemoteUserStorage.prototype.messageUploadAttachments = function (fCallback, aDownloads)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageUploadAttachments', {
|
||||
'Attachments': aDownloads
|
||||
}, 999000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {number} iUid
|
||||
* @return {boolean}
|
||||
*/
|
||||
RemoteUserStorage.prototype.message = function (fCallback, sFolderFullNameRaw, iUid)
|
||||
{
|
||||
sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
|
||||
iUid = Utils.pInt(iUid);
|
||||
|
||||
if (Cache.getFolderFromCacheList(sFolderFullNameRaw) && 0 < iUid)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Message', {}, null,
|
||||
'Message/' + this.sSubSubQuery + Base64.urlsafe_encode([
|
||||
sFolderFullNameRaw,
|
||||
iUid,
|
||||
AppStore.projectHash(),
|
||||
AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0'
|
||||
].join(String.fromCharCode(0))), ['Message']);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aExternals
|
||||
*/
|
||||
RemoteUserStorage.prototype.composeUploadExternals = function (fCallback, aExternals)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ComposeUploadExternals', {
|
||||
'Externals': aExternals
|
||||
}, 999000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sUrl
|
||||
* @param {string} sAccessToken
|
||||
*/
|
||||
RemoteUserStorage.prototype.composeUploadDrive = function (fCallback, sUrl, sAccessToken)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ComposeUploadDrive', {
|
||||
'AccessToken': sAccessToken,
|
||||
'Url': sUrl
|
||||
}, 999000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {Array=} aList = []
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderInformation = function (fCallback, sFolder, aList)
|
||||
{
|
||||
var
|
||||
bRequest = true,
|
||||
aUids = []
|
||||
;
|
||||
|
||||
if (Utils.isArray(aList) && 0 < aList.length)
|
||||
{
|
||||
bRequest = false;
|
||||
_.each(aList, function (oMessageListItem) {
|
||||
if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, oMessageListItem.uid))
|
||||
{
|
||||
aUids.push(oMessageListItem.uid);
|
||||
}
|
||||
|
||||
if (0 < oMessageListItem.threads().length)
|
||||
{
|
||||
_.each(oMessageListItem.threads(), function (sUid) {
|
||||
if (!Cache.getMessageFlagsFromCache(oMessageListItem.folderFullNameRaw, sUid))
|
||||
{
|
||||
aUids.push(sUid);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (0 < aUids.length)
|
||||
{
|
||||
bRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (bRequest)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderInformation', {
|
||||
'Folder': sFolder,
|
||||
'FlagsUids': Utils.isArray(aUids) ? aUids.join(',') : '',
|
||||
'UidNext': Cache.getFolderInboxName() === sFolder ? Cache.getFolderUidNext(sFolder) : ''
|
||||
});
|
||||
}
|
||||
else if (SettingsStore.useThreads())
|
||||
{
|
||||
require('App/User').reloadFlagsCurrentMessageListAndMessageFromCache();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aFolders
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderInformationMultiply = function (fCallback, aFolders)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
|
||||
'Folders': aFolders
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.logout = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Logout');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {Array} aUids
|
||||
* @param {boolean} bSetFlagged
|
||||
*/
|
||||
RemoteUserStorage.prototype.messageSetFlagged = function (fCallback, sFolderFullNameRaw, aUids, bSetFlagged)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageSetFlagged', {
|
||||
'Folder': sFolderFullNameRaw,
|
||||
'Uids': aUids.join(','),
|
||||
'SetAction': bSetFlagged ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {Array} aUids
|
||||
* @param {boolean} bSetSeen
|
||||
*/
|
||||
RemoteUserStorage.prototype.messageSetSeen = function (fCallback, sFolderFullNameRaw, aUids, bSetSeen)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageSetSeen', {
|
||||
'Folder': sFolderFullNameRaw,
|
||||
'Uids': aUids.join(','),
|
||||
'SetAction': bSetSeen ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {boolean} bSetSeen
|
||||
*/
|
||||
RemoteUserStorage.prototype.messageSetSeenToAll = function (fCallback, sFolderFullNameRaw, bSetSeen)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
||||
'Folder': sFolderFullNameRaw,
|
||||
'SetAction': bSetSeen ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sIdentityID
|
||||
* @param {string} sMessageFolder
|
||||
* @param {string} sMessageUid
|
||||
* @param {string} sDraftFolder
|
||||
* @param {string} sTo
|
||||
* @param {string} sCc
|
||||
* @param {string} sBcc
|
||||
* @param {string} sSubject
|
||||
* @param {boolean} bTextIsHtml
|
||||
* @param {string} sText
|
||||
* @param {Array} aAttachments
|
||||
* @param {(Array|null)} aDraftInfo
|
||||
* @param {string} sInReplyTo
|
||||
* @param {string} sReferences
|
||||
* @param {boolean} bMarkAsImportant
|
||||
*/
|
||||
RemoteUserStorage.prototype.saveMessage = function (fCallback, sIdentityID, sMessageFolder, sMessageUid, sDraftFolder,
|
||||
sTo, sCc, sBcc, sReplyTo, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bMarkAsImportant)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SaveMessage', {
|
||||
'IdentityID': sIdentityID,
|
||||
'MessageFolder': sMessageFolder,
|
||||
'MessageUid': sMessageUid,
|
||||
'DraftFolder': sDraftFolder,
|
||||
'To': sTo,
|
||||
'Cc': sCc,
|
||||
'Bcc': sBcc,
|
||||
'ReplyTo': sReplyTo,
|
||||
'Subject': sSubject,
|
||||
'TextIsHtml': bTextIsHtml ? '1' : '0',
|
||||
'Text': sText,
|
||||
'DraftInfo': aDraftInfo,
|
||||
'InReplyTo': sInReplyTo,
|
||||
'References': sReferences,
|
||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
||||
'Attachments': aAttachments
|
||||
}, Consts.Defaults.SaveMessageAjaxTimeout);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sMessageFolder
|
||||
* @param {string} sMessageUid
|
||||
* @param {string} sReadReceipt
|
||||
* @param {string} sSubject
|
||||
* @param {string} sText
|
||||
*/
|
||||
RemoteUserStorage.prototype.sendReadReceiptMessage = function (fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
|
||||
'MessageFolder': sMessageFolder,
|
||||
'MessageUid': sMessageUid,
|
||||
'ReadReceipt': sReadReceipt,
|
||||
'Subject': sSubject,
|
||||
'Text': sText
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sIdentityID
|
||||
* @param {string} sMessageFolder
|
||||
* @param {string} sMessageUid
|
||||
* @param {string} sSentFolder
|
||||
* @param {string} sTo
|
||||
* @param {string} sCc
|
||||
* @param {string} sBcc
|
||||
* @param {string} sReplyTo
|
||||
* @param {string} sSubject
|
||||
* @param {boolean} bTextIsHtml
|
||||
* @param {string} sText
|
||||
* @param {Array} aAttachments
|
||||
* @param {(Array|null)} aDraftInfo
|
||||
* @param {string} sInReplyTo
|
||||
* @param {string} sReferences
|
||||
* @param {boolean} bRequestDsn
|
||||
* @param {boolean} bRequestReadReceipt
|
||||
* @param {boolean} bMarkAsImportant
|
||||
*/
|
||||
RemoteUserStorage.prototype.sendMessage = function (fCallback, sIdentityID, sMessageFolder, sMessageUid, sSentFolder,
|
||||
sTo, sCc, sBcc, sReplyTo, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences,
|
||||
bRequestDsn, bRequestReadReceipt, bMarkAsImportant)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SendMessage', {
|
||||
'IdentityID': sIdentityID,
|
||||
'MessageFolder': sMessageFolder,
|
||||
'MessageUid': sMessageUid,
|
||||
'SentFolder': sSentFolder,
|
||||
'To': sTo,
|
||||
'Cc': sCc,
|
||||
'Bcc': sBcc,
|
||||
'ReplyTo': sReplyTo,
|
||||
'Subject': sSubject,
|
||||
'TextIsHtml': bTextIsHtml ? '1' : '0',
|
||||
'Text': sText,
|
||||
'DraftInfo': aDraftInfo,
|
||||
'InReplyTo': sInReplyTo,
|
||||
'References': sReferences,
|
||||
'Dsn': bRequestDsn ? '1' : '0',
|
||||
'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
|
||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
||||
'Attachments': aAttachments
|
||||
}, Consts.Defaults.SendMessageAjaxTimeout);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
RemoteUserStorage.prototype.saveSystemFolders = function (fCallback, oData)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Object} oData
|
||||
*/
|
||||
RemoteUserStorage.prototype.saveSettings = function (fCallback, oData)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SettingsUpdate', oData);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sPrevPassword
|
||||
* @param {string} sNewPassword
|
||||
*/
|
||||
RemoteUserStorage.prototype.changePassword = function (fCallback, sPrevPassword, sNewPassword)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ChangePassword', {
|
||||
'PrevPassword': sPrevPassword,
|
||||
'NewPassword': sNewPassword
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sNewFolderName
|
||||
* @param {string} sParentName
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderCreate = function (fCallback, sNewFolderName, sParentName)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderCreate', {
|
||||
'Folder': sNewFolderName,
|
||||
'Parent': sParentName
|
||||
}, null, '', ['Folders']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderDelete = function (fCallback, sFolderFullNameRaw)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderDelete', {
|
||||
'Folder': sFolderFullNameRaw
|
||||
}, null, '', ['Folders']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sPrevFolderFullNameRaw
|
||||
* @param {string} sNewFolderName
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderRename = function (fCallback, sPrevFolderFullNameRaw, sNewFolderName)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderRename', {
|
||||
'Folder': sPrevFolderFullNameRaw,
|
||||
'NewFolderName': sNewFolderName
|
||||
}, null, '', ['Folders']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderClear = function (fCallback, sFolderFullNameRaw)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderClear', {
|
||||
'Folder': sFolderFullNameRaw
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolderFullNameRaw
|
||||
* @param {boolean} bSubscribe
|
||||
*/
|
||||
RemoteUserStorage.prototype.folderSetSubscribe = function (fCallback, sFolderFullNameRaw, bSubscribe)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'FolderSubscribe', {
|
||||
'Folder': sFolderFullNameRaw,
|
||||
'Subscribe': bSubscribe ? '1' : '0'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {string} sToFolder
|
||||
* @param {Array} aUids
|
||||
* @param {string=} sLearning
|
||||
*/
|
||||
RemoteUserStorage.prototype.messagesMove = function (fCallback, sFolder, sToFolder, aUids, sLearning)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageMove', {
|
||||
'FromFolder': sFolder,
|
||||
'ToFolder': sToFolder,
|
||||
'Uids': aUids.join(','),
|
||||
'Learning': sLearning || ''
|
||||
}, null, '', ['MessageList']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {string} sToFolder
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
RemoteUserStorage.prototype.messagesCopy = function (fCallback, sFolder, sToFolder, aUids)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageCopy', {
|
||||
'FromFolder': sFolder,
|
||||
'ToFolder': sToFolder,
|
||||
'Uids': aUids.join(',')
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sFolder
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
RemoteUserStorage.prototype.messagesDelete = function (fCallback, sFolder, aUids)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'MessageDelete', {
|
||||
'Folder': sFolder,
|
||||
'Uids': aUids.join(',')
|
||||
}, null, '', ['MessageList']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.appDelayStart = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'AppDelayStart');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.quota = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Quota');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {number} iOffset
|
||||
* @param {number} iLimit
|
||||
* @param {string} sSearch
|
||||
*/
|
||||
RemoteUserStorage.prototype.contacts = function (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
|
||||
*/
|
||||
RemoteUserStorage.prototype.contactSave = function (fCallback, sRequestUid, sUid, aProperties)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ContactSave', {
|
||||
'RequestUid': sRequestUid,
|
||||
'Uid': Utils.trim(sUid),
|
||||
'Properties': aProperties
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {Array} aUids
|
||||
*/
|
||||
RemoteUserStorage.prototype.contactsDelete = function (fCallback, aUids)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ContactsDelete', {
|
||||
'Uids': aUids.join(',')
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
* @param {string} sQuery
|
||||
* @param {number} iPage
|
||||
*/
|
||||
RemoteUserStorage.prototype.suggestions = function (fCallback, sQuery, iPage)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'Suggestions', {
|
||||
'Query': sQuery,
|
||||
'Page': iPage
|
||||
}, null, '', ['Suggestions']);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.clearUserBackground = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'ClearUserBackground');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.facebookUser = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialFacebookUserInformation');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.facebookDisconnect = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialFacebookDisconnect');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.twitterUser = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialTwitterUserInformation');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.twitterDisconnect = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialTwitterDisconnect');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.googleUser = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialGoogleUserInformation');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.googleDisconnect = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialGoogleDisconnect');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {?Function} fCallback
|
||||
*/
|
||||
RemoteUserStorage.prototype.socialUsers = function (fCallback)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SocialUsers');
|
||||
};
|
||||
|
||||
module.exports = new RemoteUserStorage();
|
||||
|
||||
}());
|
||||
Loading…
Add table
Add a link
Reference in a new issue