fix #170: local files are not saved to cache

This commit is contained in:
antelle 2016-06-05 14:48:23 +03:00
parent c7240edca9
commit c7325076ca
No known key found for this signature in database
GPG Key ID: 26C38FADD3BDF3CA
2 changed files with 15 additions and 9 deletions

View File

@ -305,7 +305,8 @@ var AppModel = Backbone.Model.extend({
}, fileInfo); }, fileInfo);
} else if (params.fileData) { } else if (params.fileData) {
logger.info('Open file from supplied content'); logger.info('Open file from supplied content');
this.openFileWithData(params, callback, fileInfo, params.fileData, true); var needSaveToCache = params.storage !== 'file';
this.openFileWithData(params, callback, fileInfo, params.fileData, needSaveToCache);
} else if (!params.storage) { } else if (!params.storage) {
logger.info('Open file from cache as main storage'); logger.info('Open file from cache as main storage');
this.openFileFromCache(params, callback, fileInfo); this.openFileFromCache(params, callback, fileInfo);
@ -330,7 +331,8 @@ var AppModel = Backbone.Model.extend({
logger.info('Open file from content loaded from storage'); logger.info('Open file from content loaded from storage');
params.fileData = data; params.fileData = data;
params.rev = stat && stat.rev || null; params.rev = stat && stat.rev || null;
that.openFileWithData(params, callback, fileInfo, data, true); var needSaveToCache = storage.name !== 'file';
that.openFileWithData(params, callback, fileInfo, data, needSaveToCache);
} }
}); });
}; };
@ -338,7 +340,7 @@ var AppModel = Backbone.Model.extend({
if (cacheRev && storage.stat) { if (cacheRev && storage.stat) {
logger.info('Stat file'); logger.info('Stat file');
storage.stat(params.path, params.opts, function(err, stat) { storage.stat(params.path, params.opts, function(err, stat) {
if (fileInfo && (err || stat && stat.rev === cacheRev)) { if (fileInfo && storage.name !== 'file' && (err || stat && stat.rev === cacheRev)) {
logger.info('Open file from cache because ' + (err ? 'stat error' : 'it is latest'), err); logger.info('Open file from cache because ' + (err ? 'stat error' : 'it is latest'), err);
that.openFileFromCache(params, callback, fileInfo); that.openFileFromCache(params, callback, fileInfo);
} else if (stat) { } else if (stat) {
@ -353,7 +355,7 @@ var AppModel = Backbone.Model.extend({
storageLoad(); storageLoad();
} }
} else { } else {
logger.info('Open file from cache, after load will sync', params.storage); logger.info('Open file from cache, will sync after load', params.storage);
this.openFileFromCache(params, function(err, file) { this.openFileFromCache(params, function(err, file) {
if (!err && file) { if (!err && file) {
logger.info('Sync just opened file'); logger.info('Sync just opened file');
@ -609,7 +611,7 @@ var AppModel = Backbone.Model.extend({
} }
file.set('syncDate', new Date()); file.set('syncDate', new Date());
if (file.get('modified')) { if (file.get('modified')) {
logger.info('Updated sync date, saving modified file to cache and storage'); logger.info('Updated sync date, saving modified file');
saveToCacheAndStorage(); saveToCacheAndStorage();
} else if (file.get('dirty')) { } else if (file.get('dirty')) {
logger.info('Saving not modified dirty file to cache'); logger.info('Saving not modified dirty file to cache');
@ -627,11 +629,14 @@ var AppModel = Backbone.Model.extend({
}); });
}; };
var saveToCacheAndStorage = function() { var saveToCacheAndStorage = function() {
logger.info('Save to cache and storage'); logger.info('Getting file data for saving');
file.getData(function(data, err) { file.getData(function(data, err) {
if (err) { return complete(err); } if (err) { return complete(err); }
if (!file.get('dirty')) { if (storage === 'file') {
logger.info('Save to storage, skip cache because not dirty'); logger.info('Saving to file storage');
saveToStorage(data);
} else if (!file.get('dirty')) {
logger.info('Saving to storage, skip cache because not dirty');
saveToStorage(data); saveToStorage(data);
} else { } else {
logger.info('Saving to cache'); logger.info('Saving to cache');
@ -695,7 +700,7 @@ var AppModel = Backbone.Model.extend({
} }
} else if (stat.rev === fileInfo.get('rev')) { } else if (stat.rev === fileInfo.get('rev')) {
if (file.get('modified')) { if (file.get('modified')) {
logger.info('Stat found same version, modified, saving to cache and storage'); logger.info('Stat found same version, modified, saving');
saveToCacheAndStorage(); saveToCacheAndStorage();
} else { } else {
logger.info('Stat found same version, not modified'); logger.info('Stat found same version, not modified');

View File

@ -17,6 +17,7 @@ Auto-type, ui improvements
`*` don't check updates at startup `*` don't check updates at startup
`*` repos moved to github organization account `*` repos moved to github organization account
`*` allow opening same file twice `*` allow opening same file twice
`*` local files are not saved to cache
`-` prevent second app instance on windows `-` prevent second app instance on windows
`-` fix drag-drop in Safari `-` fix drag-drop in Safari