diff --git a/lib/client/dom.js b/lib/client/dom.js index fab37ae8..2ab3392b 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -1485,6 +1485,8 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; lName += lExt; } + DOM.saveDataInCache(lName, pData); + Util.exec(pCallBack, { data: pData, name: lName @@ -1498,9 +1500,15 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; success : lFunc, error : pCallBack.error }; - - return this.getCurrentFileContent(lParams, lCurrentFile); + var lName = DOM.getCurrentName(lCurrentFile); + + DOM.getDataFromCache(lName, function(data) { + if (data) + lFunc(data); + else + DOM.getCurrentFileContent(lParams, lCurrentFile); + }); }; /** @@ -1731,6 +1739,63 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; return lLink; }; + /** + * save data to storage + * + * @param name + * @param data + * @param callback + */ + this.saveDataInCache = function(name, data, callback) { + CloudCmd.getConfig(function(config) { + var allowed = config.localStorage; + + if (!allowed) + Util.exec(callback); + else { + Cache.set(name + '-data', data); + DOM.loadCurrentHash(function(hash) { + var isContain = Util.isContainStr(hash, 'error'); + + if (!isContain) + Cache.set(name + '-hash', hash); + + Util.exec(callback, hash); + }); + } + }); + }; + + /** + * save data to storage + * + * @param name + * @param data + * @param callback + */ + this.getDataFromCache = function(name, callback) { + CloudCmd.getConfig(function(config) { + var hash, allowed = config.localStorage, + isDir = DOM.isCurrentIsDir(); + + if (!allowed || isDir) + Util.exec(callback); + else { + hash = Cache.get(name + '-hash'); + + DOM.loadCurrentHash(function(pHash) { + var data, + isContain = Util.isContainStr(hash, 'error'); + + if (!isContain && hash === pHash) + data = Cache.get(name + '-data'); + + Util.exec(callback, data); + }); + } + }); + }; + /** function getting FM * @param pPanel_o = {active: true} */