From 340ae933bf00571e541e69f6f20dfc68213d3207 Mon Sep 17 00:00:00 2001 From: antelle Date: Sat, 19 Mar 2016 12:27:26 +0300 Subject: [PATCH] speedup: open from cache and sync after open --- app/scripts/models/app-model.js | 23 +++++++++++++++++++---- release-notes.md | 1 + 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/scripts/models/app-model.js b/app/scripts/models/app-model.js index d4cb5ea1..c0925b20 100644 --- a/app/scripts/models/app-model.js +++ b/app/scripts/models/app-model.js @@ -289,7 +289,13 @@ var AppModel = Backbone.Model.extend({ } if (fileInfo && fileInfo.get('modified')) { logger.info('Open file from cache because it is modified'); - this.openFileFromCache(params, callback, fileInfo); + this.openFileFromCache(params, function(err, file) { + if (!err && file) { + logger.info('Sync just opened modified file'); + _.defer(that.syncFile.bind(that, file)); + } + callback(err); + }, fileInfo); } else if (params.fileData) { logger.info('Open file from supplied content'); this.openFileWithData(params, callback, fileInfo, params.fileData, true); @@ -299,7 +305,7 @@ var AppModel = Backbone.Model.extend({ } else if (fileInfo && fileInfo.get('rev') === params.rev && fileInfo.get('storage') !== 'file') { logger.info('Open file from cache because it is latest'); this.openFileFromCache(params, callback, fileInfo); - } else { + } else if (!fileInfo || params.storage === 'file') { logger.info('Open file from storage', params.storage); var storage = Storage[params.storage]; var storageLoad = function() { @@ -339,6 +345,15 @@ var AppModel = Backbone.Model.extend({ } else { storageLoad(); } + } else { + logger.info('Open file from cache with sync after load', params.storage); + this.openFileFromCache(params, function(err, file) { + if (!err && file) { + logger.info('Sync just opened file'); + _.defer(that.syncFile.bind(that, file)); + } + callback(err); + }, fileInfo); } }, @@ -380,9 +395,8 @@ var AppModel = Backbone.Model.extend({ logger.info('Loaded local edit state'); file.setLocalEditState(fileInfo.get('editState')); } - logger.info('Mark file as modified and schedule sync'); + logger.info('Mark file as modified'); file.set('modified', true); - setTimeout(that.syncFile.bind(that, file), 0); } if (fileInfo) { file.set('syncDate', fileInfo.get('syncDate')); @@ -397,6 +411,7 @@ var AppModel = Backbone.Model.extend({ that.addToLastOpenFiles(file, rev); that.addFile(file); that.fileOpened(file); + callback(null, file); }); }, diff --git a/release-notes.md b/release-notes.md index ac9450a2..22a93748 100644 --- a/release-notes.md +++ b/release-notes.md @@ -4,6 +4,7 @@ Release notes Storage providers, usability improvements `+` WebDAV `+` option to remember keyfiles +`+` files open improvements `+` beta version app `+` option to lock on password copy `+` save/restore window position after close