From f083e50fadae8c0b9e3cdabcfeae681f7f0c5fef Mon Sep 17 00:00:00 2001 From: antelle Date: Thu, 1 Jun 2017 21:35:56 +0200 Subject: [PATCH] fix #649: loading keyfiles with path --- app/scripts/models/app-model.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/app/scripts/models/app-model.js b/app/scripts/models/app-model.js index 16c4f5ad..699ab54b 100644 --- a/app/scripts/models/app-model.js +++ b/app/scripts/models/app-model.js @@ -476,6 +476,7 @@ const AppModel = Backbone.Model.extend({ openFileWithData: function(params, callback, fileInfo, data, updateCacheOnSuccess) { const logger = new Logger('open', params.name); + let needLoadKeyFile = false; if (!params.keyFileData && fileInfo && fileInfo.get('keyFileName')) { params.keyFileName = fileInfo.get('keyFileName'); if (this.settings.get('rememberKeyFiles') === 'data') { @@ -483,14 +484,7 @@ const AppModel = Backbone.Model.extend({ } else if (this.settings.get('rememberKeyFiles') === 'path' && fileInfo.get('keyFilePath')) { params.keyFilePath = fileInfo.get('keyFilePath'); if (Storage.file.enabled) { - Storage.file.load(params.keyFilePath, {}, (err, data, stat) => { - if (err) { - logger.info('Storage load error', err); - callback(err); - } else { - params.keyFileData = data; - } - }); + needLoadKeyFile = true; } } } @@ -504,7 +498,7 @@ const AppModel = Backbone.Model.extend({ backup: fileInfo && fileInfo.get('backup') || null, fingerprint: fileInfo && fileInfo.get('fingerprint') || null }); - file.open(params.password, data, params.keyFileData, err => { + const openComplete = err => { if (err) { return callback(err); } @@ -532,7 +526,23 @@ const AppModel = Backbone.Model.extend({ this.addFile(file); callback(null, file); this.fileOpened(file, data, params); - }); + }; + const open = () => { + file.open(params.password, data, params.keyFileData, openComplete); + }; + if (needLoadKeyFile) { + Storage.file.load(params.keyFilePath, {}, (err, data) => { + if (err) { + logger.info('Storage load error', err); + callback(err); + } else { + params.keyFileData = data; + open(); + } + }); + } else { + open(); + } }, importFileWithXml: function(params, callback) {