CommonJS (research/2)

This commit is contained in:
RainLoop Team 2014-08-21 19:08:34 +04:00
parent 56607de87c
commit 586abbb802
115 changed files with 16201 additions and 9943 deletions

View file

@ -5,13 +5,17 @@
'use strict';
var
window = require('./External/window.js'),
$ = require('./External/jquery.js'),
Consts = require('./Common/Consts.js'),
Enums = require('./Common/Enums.js'),
Globals = require('./Common/Globals.js'),
Utils = require('./Common/Utils.js'),
Plugins = require('./Common/Plugins.js')
window = require('../External/window.js'),
$ = require('../External/jquery.js'),
Consts = require('../Common/Consts.js'),
Enums = require('../Common/Enums.js'),
Globals = require('../Common/Globals.js'),
Utils = require('../Common/Utils.js'),
Plugins = require('../Common/Plugins.js'),
LinkBuilder = require('../Common/LinkBuilder.js'),
RL = require('../RL.js')
;
/**
@ -59,7 +63,7 @@
if (Consts.Values.TokenErrorLimit < Globals.iTokenErrorCount)
{
RL.loginAndLogoutReload(true); // TODO cjs
RL().loginAndLogoutReload(true);
}
if (oData.Logout || Consts.Values.AjaxErrorLimit < Globals.iAjaxErrorCount)
@ -69,7 +73,7 @@
window.__rlah_clear();
}
RL.loginAndLogoutReload(true); // TODO cjs
RL().loginAndLogoutReload(true);
}
}
else if (Enums.StorageResultType.Success === sType && oData && oData.Result)
@ -164,7 +168,7 @@
oDefAjax = $.ajax({
'type': bPost ? 'POST' : 'GET',
'url': RL.link().ajax(sGetAdd), // TODO cjs
'url': LinkBuilder.ajax(sGetAdd),
'async': true,
'dataType': 'json',
'data': bPost ? oParameters : {},

View file

@ -1,48 +0,0 @@
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module) {
'use strict';
var
Enums = require('./Common/Enums.js'),
Utils = require('./Common/Utils.js'),
RL = require('./RL.js')
;
/**
* @constructor
*/
function AbstractCacheStorage()
{
this.bCapaGravatar = RL().capa(Enums.Capa.Gravatar);
}
/**
* @type {Object}
*/
AbstractCacheStorage.prototype.oServices = {};
/**
* @type {boolean}
*/
AbstractCacheStorage.prototype.bCapaGravatar = false;
AbstractCacheStorage.prototype.clear = function ()
{
this.bCapaGravatar = !!this.bCapaGravatar; // TODO
};
/**
* @param {string} sEmail
* @return {string}
*/
AbstractCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
{
sEmail = Utils.trim(sEmail);
fCallback(this.bCapaGravatar && '' !== sEmail ? RL().link().avatarLink(sEmail) : '', sEmail);
};
module.exports = AbstractCacheStorage;
}(module));

View file

@ -5,11 +5,11 @@
'use strict';
var
ko = require('./External/ko.js'),
key = require('./External/key.js'),
Enums = require('./Common/Enums.js'),
Globals = require('./Common/Globals.js'),
Utils = require('./Common/Utils.js')
ko = require('../External/ko.js'),
key = require('../External/key.js'),
Enums = require('../Common/Enums.js'),
Globals = require('../Common/Globals.js'),
Utils = require('../Common/Utils.js')
;
/**

View file

@ -5,8 +5,8 @@
'use strict';
var
_ = require('./External/underscore.js'),
AbstractAjaxRemoteStorage = require('./Storages/AbstractAjaxRemoteStorage.js')
_ = require('../External/underscore.js'),
AbstractAjaxRemoteStorage = require('./AbstractAjaxRemoteStorage.js')
;
/**
@ -270,6 +270,6 @@
this.defaultRequest(fCallback, 'AdminPing');
};
module.exports = AdminAjaxRemoteStorage;
module.exports = new AdminAjaxRemoteStorage();
}(module));

View file

@ -1,25 +0,0 @@
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (module) {
'use strict';
var
_ = require('./External/underscore.js'),
AbstractCacheStorage = require('./Storages/AbstractCacheStorage.js')
;
/**
* @constructor
* @extends AbstractCacheStorage
*/
function AdminCacheStorage()
{
AbstractCacheStorage.call(this);
}
_.extend(AdminCacheStorage.prototype, AbstractCacheStorage.prototype);
module.exports = AdminCacheStorage;
}(module));

View file

@ -5,9 +5,10 @@
'use strict';
var
_ = require('./External/underscore.js'),
ko = require('./External/ko.js'),
AbstractData = require('./Storages/AbstractData.js')
_ = require('../External/underscore.js'),
ko = require('../External/ko.js'),
AbstractData = require('./AbstractData.js')
;
/**
@ -62,6 +63,6 @@
AbstractData.prototype.populateDataOnStart.call(this);
};
module.exports = AdminDataStorage;
module.exports = new AdminDataStorage();
}(module));

View file

@ -5,9 +5,9 @@
'use strict';
var
_ = require('./External/underscore.js'),
CookieDriver = require('./Storages/LocalStorages/CookieDriver.js'),
LocalStorageDriver = require('./Storages/LocalStorages/LocalStorageDriver.js')
_ = require('../External/underscore.js'),
CookieDriver = require('./LocalStorages/CookieDriver.js'),
LocalStorageDriver = require('./LocalStorages/LocalStorageDriver.js')
;
/**
@ -49,6 +49,6 @@
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
};
module.exports = LocalStorage;
module.exports = new LocalStorage();
}(module));

View file

@ -5,10 +5,10 @@
'use strict';
var
$ = require('./External/jquery.js'),
JSON = require('./External/JSON.js'),
Consts = require('./Common/Consts.js'),
Utils = require('./Common/Utils.js')
$ = require('../../External/jquery.js'),
JSON = require('../../External/JSON.js'),
Consts = require('../../Common/Consts.js'),
Utils = require('../../Common/Utils.js')
;
/**

View file

@ -5,10 +5,10 @@
'use strict';
var
window = require('./External/window.js'),
JSON = require('./External/JSON.js'),
Consts = require('./Common/Consts.js'),
Utils = require('./Common/Utils.js')
window = require('../../External/window.js'),
JSON = require('../../External/JSON.js'),
Consts = require('../../Common/Consts.js'),
Utils = require('../../Common/Utils.js')
;
/**

File diff suppressed because it is too large Load diff

View file

@ -1,319 +1,349 @@
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractCacheStorage
*/
function WebMailCacheStorage()
{
AbstractCacheStorage.call(this);
(function (module) {
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
this.oFolderHashCache = {};
this.oFolderUidNextCache = {};
this.oMessageListHashCache = {};
this.oMessageFlagsCache = {};
this.oNewMessage = {};
this.oRequestedMessage = {};
}
'use strict';
_.extend(WebMailCacheStorage.prototype, AbstractCacheStorage.prototype);
var
_ = require('../External/underscore.js'),
Enums = require('../Common/Enums.js'),
Utils = require('../Common/Utils.js'),
LinkBuilder = require('../Common/LinkBuilder.js'),
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFoldersCache = {};
RL = require('../RL.js')
;
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFoldersNamesCache = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFolderHashCache = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFolderUidNextCache = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oMessageListHashCache = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oMessageFlagsCache = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oBodies = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oNewMessage = {};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oRequestedMessage = {};
WebMailCacheStorage.prototype.clear = function ()
{
AbstractCacheStorage.prototype.clear.call(this);
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
this.oFolderHashCache = {};
this.oFolderUidNextCache = {};
this.oMessageListHashCache = {};
this.oMessageFlagsCache = {};
this.oBodies = {};
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
* @return {string}
*/
WebMailCacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
{
return sFolderFullNameRaw + '#' + sUid;
};
/**
* @param {string} sFolder
* @param {string} sUid
*/
WebMailCacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
{
this.oRequestedMessage[this.getMessageKey(sFolder, sUid)] = true;
};
/**
* @param {string} sFolder
* @param {string} sUid
* @return {boolean}
*/
WebMailCacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
{
return true === this.oRequestedMessage[this.getMessageKey(sFolder, sUid)];
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
WebMailCacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = true;
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
WebMailCacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
{
if (this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)])
/**
* @constructor
*/
function WebMailCacheStorage()
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = null;
return true;
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
this.oFolderHashCache = {};
this.oFolderUidNextCache = {};
this.oMessageListHashCache = {};
this.oMessageFlagsCache = {};
this.oNewMessage = {};
this.oRequestedMessage = {};
this.bCapaGravatar = RL().capa(Enums.Capa.Gravatar);
}
return false;
};
/**
* @type {boolean}
*/
WebMailCacheStorage.prototype.bCapaGravatar = false;
WebMailCacheStorage.prototype.clearNewMessageCache = function ()
{
this.oNewMessage = {};
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFoldersCache = {};
/**
* @param {string} sFolderHash
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
{
return '' !== sFolderHash && this.oFoldersNamesCache[sFolderHash] ? this.oFoldersNamesCache[sFolderHash] : '';
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFoldersNamesCache = {};
/**
* @param {string} sFolderHash
* @param {string} sFolderFullNameRaw
*/
WebMailCacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
{
this.oFoldersNamesCache[sFolderHash] = sFolderFullNameRaw;
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFolderHashCache = {};
/**
* @param {string} sFolderFullNameRaw
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderHashCache[sFolderFullNameRaw] ? this.oFolderHashCache[sFolderFullNameRaw] : '';
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oFolderUidNextCache = {};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sFolderHash
*/
WebMailCacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
{
this.oFolderHashCache[sFolderFullNameRaw] = sFolderHash;
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oMessageListHashCache = {};
/**
* @param {string} sFolderFullNameRaw
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderUidNextCache[sFolderFullNameRaw] ? this.oFolderUidNextCache[sFolderFullNameRaw] : '';
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oMessageFlagsCache = {};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUidNext
*/
WebMailCacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
{
this.oFolderUidNextCache[sFolderFullNameRaw] = sUidNext;
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oBodies = {};
/**
* @param {string} sFolderFullNameRaw
* @return {?FolderModel}
*/
WebMailCacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFoldersCache[sFolderFullNameRaw] ? this.oFoldersCache[sFolderFullNameRaw] : null;
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oNewMessage = {};
/**
* @param {string} sFolderFullNameRaw
* @param {?FolderModel} oFolder
*/
WebMailCacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
{
this.oFoldersCache[sFolderFullNameRaw] = oFolder;
};
/**
* @type {Object}
*/
WebMailCacheStorage.prototype.oRequestedMessage = {};
/**
* @param {string} sFolderFullNameRaw
*/
WebMailCacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
{
this.setFolderToCacheList(sFolderFullNameRaw, null);
};
WebMailCacheStorage.prototype.clear = function ()
{
this.oFoldersCache = {};
this.oFoldersNamesCache = {};
this.oFolderHashCache = {};
this.oFolderUidNextCache = {};
this.oMessageListHashCache = {};
this.oMessageFlagsCache = {};
this.oBodies = {};
};
/**
* @param {string} sFolderFullName
* @param {string} sUid
* @return {?Array}
*/
WebMailCacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
{
return this.oMessageFlagsCache[sFolderFullName] && this.oMessageFlagsCache[sFolderFullName][sUid] ?
this.oMessageFlagsCache[sFolderFullName][sUid] : null;
};
/**
* @param {string} sFolderFullName
* @param {string} sUid
* @param {Array} aFlagsCache
*/
WebMailCacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
{
if (!this.oMessageFlagsCache[sFolderFullName])
/**
* @param {string} sEmail
* @param {Function} fCallback
* @return {string}
*/
WebMailCacheStorage.prototype.getUserPic = function (sEmail, fCallback)
{
sEmail = Utils.trim(sEmail);
fCallback(this.bCapaGravatar && '' !== sEmail ? LinkBuilder.avatarLink(sEmail) : '', sEmail);
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
* @return {string}
*/
WebMailCacheStorage.prototype.getMessageKey = function (sFolderFullNameRaw, sUid)
{
return sFolderFullNameRaw + '#' + sUid;
};
/**
* @param {string} sFolder
* @param {string} sUid
*/
WebMailCacheStorage.prototype.addRequestedMessage = function (sFolder, sUid)
{
this.oRequestedMessage[this.getMessageKey(sFolder, sUid)] = true;
};
/**
* @param {string} sFolder
* @param {string} sUid
* @return {boolean}
*/
WebMailCacheStorage.prototype.hasRequestedMessage = function (sFolder, sUid)
{
return true === this.oRequestedMessage[this.getMessageKey(sFolder, sUid)];
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
WebMailCacheStorage.prototype.addNewMessageCache = function (sFolderFullNameRaw, sUid)
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = true;
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUid
*/
WebMailCacheStorage.prototype.hasNewMessageAndRemoveFromCache = function (sFolderFullNameRaw, sUid)
{
if (this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)])
{
this.oNewMessage[this.getMessageKey(sFolderFullNameRaw, sUid)] = null;
return true;
}
return false;
};
WebMailCacheStorage.prototype.clearNewMessageCache = function ()
{
this.oNewMessage = {};
};
/**
* @param {string} sFolderHash
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderFullNameRaw = function (sFolderHash)
{
return '' !== sFolderHash && this.oFoldersNamesCache[sFolderHash] ? this.oFoldersNamesCache[sFolderHash] : '';
};
/**
* @param {string} sFolderHash
* @param {string} sFolderFullNameRaw
*/
WebMailCacheStorage.prototype.setFolderFullNameRaw = function (sFolderHash, sFolderFullNameRaw)
{
this.oFoldersNamesCache[sFolderHash] = sFolderFullNameRaw;
};
/**
* @param {string} sFolderFullNameRaw
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderHash = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderHashCache[sFolderFullNameRaw] ? this.oFolderHashCache[sFolderFullNameRaw] : '';
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sFolderHash
*/
WebMailCacheStorage.prototype.setFolderHash = function (sFolderFullNameRaw, sFolderHash)
{
this.oFolderHashCache[sFolderFullNameRaw] = sFolderHash;
};
/**
* @param {string} sFolderFullNameRaw
* @return {string}
*/
WebMailCacheStorage.prototype.getFolderUidNext = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFolderUidNextCache[sFolderFullNameRaw] ? this.oFolderUidNextCache[sFolderFullNameRaw] : '';
};
/**
* @param {string} sFolderFullNameRaw
* @param {string} sUidNext
*/
WebMailCacheStorage.prototype.setFolderUidNext = function (sFolderFullNameRaw, sUidNext)
{
this.oFolderUidNextCache[sFolderFullNameRaw] = sUidNext;
};
/**
* @param {string} sFolderFullNameRaw
* @return {?FolderModel}
*/
WebMailCacheStorage.prototype.getFolderFromCacheList = function (sFolderFullNameRaw)
{
return '' !== sFolderFullNameRaw && this.oFoldersCache[sFolderFullNameRaw] ? this.oFoldersCache[sFolderFullNameRaw] : null;
};
/**
* @param {string} sFolderFullNameRaw
* @param {?FolderModel} oFolder
*/
WebMailCacheStorage.prototype.setFolderToCacheList = function (sFolderFullNameRaw, oFolder)
{
this.oFoldersCache[sFolderFullNameRaw] = oFolder;
};
/**
* @param {string} sFolderFullNameRaw
*/
WebMailCacheStorage.prototype.removeFolderFromCacheList = function (sFolderFullNameRaw)
{
this.setFolderToCacheList(sFolderFullNameRaw, null);
};
/**
* @param {string} sFolderFullName
* @param {string} sUid
* @return {?Array}
*/
WebMailCacheStorage.prototype.getMessageFlagsFromCache = function (sFolderFullName, sUid)
{
return this.oMessageFlagsCache[sFolderFullName] && this.oMessageFlagsCache[sFolderFullName][sUid] ?
this.oMessageFlagsCache[sFolderFullName][sUid] : null;
};
/**
* @param {string} sFolderFullName
* @param {string} sUid
* @param {Array} aFlagsCache
*/
WebMailCacheStorage.prototype.setMessageFlagsToCache = function (sFolderFullName, sUid, aFlagsCache)
{
if (!this.oMessageFlagsCache[sFolderFullName])
{
this.oMessageFlagsCache[sFolderFullName] = {};
}
this.oMessageFlagsCache[sFolderFullName][sUid] = aFlagsCache;
};
/**
* @param {string} sFolderFullName
*/
WebMailCacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
{
this.oMessageFlagsCache[sFolderFullName] = {};
}
this.oMessageFlagsCache[sFolderFullName][sUid] = aFlagsCache;
};
};
/**
* @param {string} sFolderFullName
*/
WebMailCacheStorage.prototype.clearMessageFlagsFromCacheByFolder = function (sFolderFullName)
{
this.oMessageFlagsCache[sFolderFullName] = {};
};
/**
* @param {(MessageModel|null)} oMessage
*/
WebMailCacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
{
if (oMessage)
/**
* @param {(MessageModel|null)} oMessage
*/
WebMailCacheStorage.prototype.initMessageFlagsFromCache = function (oMessage)
{
var
self = this,
aFlags = this.getMessageFlagsFromCache(oMessage.folderFullNameRaw, oMessage.uid),
mUnseenSubUid = null,
mFlaggedSubUid = null
;
if (aFlags && 0 < aFlags.length)
if (oMessage)
{
oMessage.unseen(!!aFlags[0]);
oMessage.flagged(!!aFlags[1]);
oMessage.answered(!!aFlags[2]);
oMessage.forwarded(!!aFlags[3]);
oMessage.isReadReceipt(!!aFlags[4]);
}
var
self = this,
aFlags = this.getMessageFlagsFromCache(oMessage.folderFullNameRaw, oMessage.uid),
mUnseenSubUid = null,
mFlaggedSubUid = null
;
if (0 < oMessage.threads().length)
if (aFlags && 0 < aFlags.length)
{
oMessage.unseen(!!aFlags[0]);
oMessage.flagged(!!aFlags[1]);
oMessage.answered(!!aFlags[2]);
oMessage.forwarded(!!aFlags[3]);
oMessage.isReadReceipt(!!aFlags[4]);
}
if (0 < oMessage.threads().length)
{
mUnseenSubUid = _.find(oMessage.threads(), function (iSubUid) {
var aFlags = self.getMessageFlagsFromCache(oMessage.folderFullNameRaw, iSubUid);
return aFlags && 0 < aFlags.length && !!aFlags[0];
});
mFlaggedSubUid = _.find(oMessage.threads(), function (iSubUid) {
var aFlags = self.getMessageFlagsFromCache(oMessage.folderFullNameRaw, iSubUid);
return aFlags && 0 < aFlags.length && !!aFlags[1];
});
oMessage.hasUnseenSubMessage(mUnseenSubUid && 0 < Utils.pInt(mUnseenSubUid));
oMessage.hasFlaggedSubMessage(mFlaggedSubUid && 0 < Utils.pInt(mFlaggedSubUid));
}
}
};
/**
* @param {(MessageModel|null)} oMessage
*/
WebMailCacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
{
if (oMessage)
{
mUnseenSubUid = _.find(oMessage.threads(), function (iSubUid) {
var aFlags = self.getMessageFlagsFromCache(oMessage.folderFullNameRaw, iSubUid);
return aFlags && 0 < aFlags.length && !!aFlags[0];
});
mFlaggedSubUid = _.find(oMessage.threads(), function (iSubUid) {
var aFlags = self.getMessageFlagsFromCache(oMessage.folderFullNameRaw, iSubUid);
return aFlags && 0 < aFlags.length && !!aFlags[1];
});
oMessage.hasUnseenSubMessage(mUnseenSubUid && 0 < Utils.pInt(mUnseenSubUid));
oMessage.hasFlaggedSubMessage(mFlaggedSubUid && 0 < Utils.pInt(mFlaggedSubUid));
this.setMessageFlagsToCache(
oMessage.folderFullNameRaw,
oMessage.uid,
[oMessage.unseen(), oMessage.flagged(), oMessage.answered(), oMessage.forwarded(), oMessage.isReadReceipt()]
);
}
}
};
};
/**
* @param {string} sFolder
* @param {string} sUid
* @param {Array} aFlags
*/
WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
{
if (Utils.isArray(aFlags) && 0 < aFlags.length)
{
this.setMessageFlagsToCache(sFolder, sUid, aFlags);
}
};
/**
* @param {(MessageModel|null)} oMessage
*/
WebMailCacheStorage.prototype.storeMessageFlagsToCache = function (oMessage)
{
if (oMessage)
{
this.setMessageFlagsToCache(
oMessage.folderFullNameRaw,
oMessage.uid,
[oMessage.unseen(), oMessage.flagged(), oMessage.answered(), oMessage.forwarded(), oMessage.isReadReceipt()]
);
}
};
/**
* @param {string} sFolder
* @param {string} sUid
* @param {Array} aFlags
*/
WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function (sFolder, sUid, aFlags)
{
if (Utils.isArray(aFlags) && 0 < aFlags.length)
{
this.setMessageFlagsToCache(sFolder, sUid, aFlags);
}
};
module.exports = new WebMailCacheStorage();
}(module));

View file

@ -5,19 +5,29 @@
'use strict';
var
window = require('./External/window.js'),
$ = require('./External/jquery.js'),
_ = require('./External/underscore.js'),
ko = require('./External/ko.js'),
moment = require('./External/moment.js'),
$div = require('./External/$div.js'),
NotificationClass = require('./External/NotificationClass.js'),
Consts = require('./Common/Consts.js'),
Enums = require('./Common/Enums.js'),
Globals = require('./Common/Globals.js'),
Utils = require('./Common/Utils.js'),
kn = require('./Knoin/Knoin.js'),
AbstractData = require('./Storages/AbstractData.js')
window = require('../External/window.js'),
$ = require('../External/jquery.js'),
_ = require('../External/underscore.js'),
ko = require('../External/ko.js'),
moment = require('../External/moment.js'),
$div = require('../External/$div.js'),
NotificationClass = require('../External/NotificationClass.js'),
Consts = require('../Common/Consts.js'),
Enums = require('../Common/Enums.js'),
Globals = require('../Common/Globals.js'),
Utils = require('../Common/Utils.js'),
LinkBuilder = require('../Common/LinkBuilder.js'),
Cache = require('../Storages/WebMailCacheStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
kn = require('../Knoin/Knoin.js'),
MessageModel = require('../Models/MessageModel.js'),
LocalStorage = require('./LocalStorage.js'),
AbstractData = require('./AbstractData.js')
;
/**
@ -31,7 +41,7 @@
var
fRemoveSystemFolderType = function (observable) {
return function () {
var oFolder = RL.cache().getFolderFromCacheList(observable()); // TODO cjs
var oFolder = Cache.getFolderFromCacheList(observable()); // TODO cjs
if (oFolder)
{
oFolder.type(Enums.FolderType.User);
@ -40,7 +50,7 @@
},
fSetSystemFolderType = function (iType) {
return function (sValue) {
var oFolder = RL.cache().getFolderFromCacheList(sValue); // TODO cjs
var oFolder = Cache.getFolderFromCacheList(sValue); // TODO cjs
if (oFolder)
{
oFolder.type(iType);
@ -219,7 +229,7 @@
this.folderListSystem = ko.computed(function () {
return _.compact(_.map(this.folderListSystemNames(), function (sName) {
return RL.cache().getFolderFromCacheList(sName); // TODO cjs
return Cache.getFolderFromCacheList(sName); // TODO cjs
}));
}, this);
@ -263,7 +273,7 @@
this.mainMessageListSearch = ko.computed({
'read': this.messageListSearch,
'write': function (sValue) {
kn.setHash(RL.link().mailBox( // TODO cjs
kn.setHash(LinkBuilder.mailBox( // TODO cjs
this.currentFolderFullNameHash(), 1, Utils.trim(sValue.toString())
));
},
@ -513,7 +523,7 @@
this.signatureToAll(!!RL.settingsGet('SignatureToAll'));
this.enableTwoFactor(!!RL.settingsGet('EnableTwoFactor'));
this.lastFoldersHash = RL.local().get(Enums.ClientSideKeyName.FoldersLashHash) || '';
this.lastFoldersHash = LocalStorage.get(Enums.ClientSideKeyName.FoldersLashHash) || '';
this.remoteSuggestions = !!RL.settingsGet('RemoteSuggestions');
@ -528,7 +538,6 @@
if (Utils.isArray(aNewMessages) && 0 < aNewMessages.length)
{
var
oCache = RL.cache(),// TODO cjs
iIndex = 0,
iLen = aNewMessages.length,
fNotificationHelper = function (sImageSrc, sTitle, sText)
@ -566,13 +575,13 @@
;
_.each(aNewMessages, function (oItem) {
oCache.addNewMessageCache(sFolder, oItem.Uid);
Cache.addNewMessageCache(sFolder, oItem.Uid);
});
if (3 < iLen)
{
fNotificationHelper(
RL.link().notificationMailIcon(),// TODO cjs
LinkBuilder.notificationMailIcon(),
RL.data().accountEmail(),
Utils.i18n('MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION', {
'COUNT': iLen
@ -584,15 +593,15 @@
for (; iIndex < iLen; iIndex++)
{
fNotificationHelper(
RL.link().notificationMailIcon(),// TODO cjs
MessageModel.emailsToLine(MessageModel.initEmailsFromJson(aNewMessages[iIndex].From), false),// TODO cjs
LinkBuilder.notificationMailIcon(),
MessageModel.emailsToLine(MessageModel.initEmailsFromJson(aNewMessages[iIndex].From), false),
aNewMessages[iIndex].Subject
);
}
}
}
RL.cache().setFolderUidNext(sFolder, sUidNext);// TODO cjs
Cache.setFolderUidNext(sFolder, sUidNext);
}
};
@ -620,14 +629,14 @@
{
sFolderFullNameRaw = oFolder.FullNameRaw;
oCacheFolder = RL.cache().getFolderFromCacheList(sFolderFullNameRaw);// TODO cjs
oCacheFolder = Cache.getFolderFromCacheList(sFolderFullNameRaw);// TODO cjs
if (!oCacheFolder)
{
oCacheFolder = FolderModel.newInstanceFromJson(oFolder);// TODO cjs
if (oCacheFolder)
{
RL.cache().setFolderToCacheList(sFolderFullNameRaw, oCacheFolder);// TODO cjs
RL.cache().setFolderFullNameRaw(oCacheFolder.fullNameHash, sFolderFullNameRaw);// TODO cjs
Cache.setFolderToCacheList(sFolderFullNameRaw, oCacheFolder);// TODO cjs
Cache.setFolderFullNameRaw(oCacheFolder.fullNameHash, sFolderFullNameRaw);// TODO cjs
}
}
@ -639,7 +648,7 @@
{
if (oFolder.Extended.Hash)
{
RL.cache().setFolderHash(oCacheFolder.fullNameRaw, oFolder.Extended.Hash);// TODO cjs
Cache.setFolderHash(oCacheFolder.fullNameRaw, oFolder.Extended.Hash);// TODO cjs
}
if (Utils.isNormal(oFolder.Extended.MessageCount))
@ -680,7 +689,7 @@
oRLData = RL.data(),// TODO cjs
fNormalizeFolder = function (sFolderFullNameRaw) {
return ('' === sFolderFullNameRaw || Consts.Values.UnuseOptionValue === sFolderFullNameRaw ||
null !== RL.cache().getFolderFromCacheList(sFolderFullNameRaw)) ? sFolderFullNameRaw : '';// TODO cjs
null !== Cache.getFolderFromCacheList(sFolderFullNameRaw)) ? sFolderFullNameRaw : '';// TODO cjs
}
;
@ -722,8 +731,7 @@
if (bUpdate)
{
// TODO cjs
RL.remote().saveSystemFolders(Utils.emptyFunction, {
Remote.saveSystemFolders(Utils.emptyFunction, {
'SentFolder': oRLData.sentFolder(),
'DraftFolder': oRLData.draftFolder(),
'SpamFolder': oRLData.spamFolder(),
@ -733,8 +741,7 @@
});
}
// TODO cjs
RL.local().set(Enums.ClientSideKeyName.FoldersLashHash, oData.Result.FoldersHash);
LocalStorage.set(Enums.ClientSideKeyName.FoldersLashHash, oData.Result.FoldersHash);
}
};
@ -795,7 +802,7 @@
});
_.find(aTimeouts, function (aItem) {
var oFolder = RL.cache().getFolderFromCacheList(aItem[1]);// TODO cjs
var oFolder = Cache.getFolderFromCacheList(aItem[1]);// TODO cjs
if (oFolder)
{
oFolder.interval = iUtc;
@ -827,10 +834,9 @@
var
iUnseenCount = 0,
oData = RL.data(),// TODO cjs
oCache = RL.cache(),// TODO cjs
aMessageList = oData.messageList(),
oFromFolder = RL.cache().getFolderFromCacheList(sFromFolderFullNameRaw),
oToFolder = '' === sToFolderFullNameRaw ? null : oCache.getFolderFromCacheList(sToFolderFullNameRaw || ''),
oFromFolder = Cache.getFolderFromCacheList(sFromFolderFullNameRaw),
oToFolder = '' === sToFolderFullNameRaw ? null : Cache.getFolderFromCacheList(sToFolderFullNameRaw || ''),
sCurrentFolderFullNameRaw = oData.currentFolderFullNameRaw(),
oCurrentMessage = oData.message(),
aMessages = sCurrentFolderFullNameRaw === sFromFolderFullNameRaw ? _.filter(aMessageList, function (oMessage) {
@ -900,12 +906,12 @@
if ('' !== sFromFolderFullNameRaw)
{
oCache.setFolderHash(sFromFolderFullNameRaw, '');
Cache.setFolderHash(sFromFolderFullNameRaw, '');
}
if ('' !== sToFolderFullNameRaw)
{
oCache.setFolderHash(sToFolderFullNameRaw, '');
Cache.setFolderHash(sToFolderFullNameRaw, '');
}
};
@ -931,7 +937,7 @@
this.messageError('');
oMessage.initUpdateByMessageJson(oData.Result);
RL.cache().addRequestedMessage(oMessage.folderFullNameRaw, oMessage.uid);// TODO cjs
Cache.addRequestedMessage(oMessage.folderFullNameRaw, oMessage.uid);// TODO cjs
if (!bCached)
{
@ -1052,7 +1058,7 @@
}
}
RL.cache().initMessageFlagsFromCache(oMessage);
Cache.initMessageFlagsFromCache(oMessage);
if (oMessage.unseen())
{
RL.setMessageSeen(oMessage);
@ -1080,7 +1086,6 @@
{
var
oRainLoopData = RL.data(),
oCache = RL.cache(),
mLastCollapsedThreadUids = null,
iIndex = 0,
iLen = 0,
@ -1104,14 +1109,14 @@
mLastCollapsedThreadUids = oData.Result.LastCollapsedThreadUids;
}
oFolder = RL.cache().getFolderFromCacheList(
oFolder = Cache.getFolderFromCacheList(
Utils.isNormal(oData.Result.Folder) ? oData.Result.Folder : '');
if (oFolder && !bCached)
{
oFolder.interval = iUtc;
RL.cache().setFolderHash(oData.Result.Folder, oData.Result.FolderHash);
Cache.setFolderHash(oData.Result.Folder, oData.Result.FolderHash);
if (Utils.isNormal(oData.Result.MessageCount))
{
@ -1133,7 +1138,7 @@
if (bUnreadCountChange && oFolder)
{
RL.cache().clearMessageFlagsFromCacheByFolder(oFolder.fullNameRaw);
Cache.clearMessageFlagsFromCacheByFolder(oFolder.fullNameRaw);
}
for (iIndex = 0, iLen = oData.Result['@Collection'].length; iIndex < iLen; iIndex++)
@ -1149,7 +1154,7 @@
if (oMessage)
{
if (oCache.hasNewMessageAndRemoveFromCache(oMessage.folderFullNameRaw, oMessage.uid) && 5 >= iNewCount)
if (Cache.hasNewMessageAndRemoveFromCache(oMessage.folderFullNameRaw, oMessage.uid) && 5 >= iNewCount)
{
iNewCount++;
oMessage.newForAnimation(true);
@ -1159,11 +1164,11 @@
if (bCached)
{
RL.cache().initMessageFlagsFromCache(oMessage);
Cache.initMessageFlagsFromCache(oMessage);
}
else
{
RL.cache().storeMessageFlagsToCache(oMessage);
Cache.storeMessageFlagsToCache(oMessage);
}
oMessage.lastInCollapsedThread(mLastCollapsedThreadUids && -1 < Utils.inArray(Utils.pInt(oMessage.uid), mLastCollapsedThreadUids) ? true : false);
@ -1188,7 +1193,7 @@
oRainLoopData.staticMessageList = aList;
}
oCache.clearNewMessageCache();
Cache.clearNewMessageCache();
if (oFolder && (bCached || bUnreadCountChange || RL.data().useThreads()))
{
@ -1282,6 +1287,6 @@
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
module.exports = WebMailDataStorage;
module.exports = new WebMailDataStorage();
}(module));