diff --git a/app/scripts/collections/file-info-collection.js b/app/scripts/collections/file-info-collection.js index 7e88aeb5..2b5043e9 100644 --- a/app/scripts/collections/file-info-collection.js +++ b/app/scripts/collections/file-info-collection.js @@ -11,9 +11,12 @@ const FileInfoCollection = Backbone.Collection.extend({ }, load: function () { - const data = SettingsStore.load('file-info'); + SettingsStore.load('file-info', this.onLoaded.bind(this)); + }, + + onLoaded: function(data) { if (data) { - this.reset(data, {silent: true}); + this.reset(data, { silent: true }); } }, diff --git a/app/scripts/comp/settings-store.js b/app/scripts/comp/settings-store.js index b533d873..b6065e1c 100644 --- a/app/scripts/comp/settings-store.js +++ b/app/scripts/comp/settings-store.js @@ -1,6 +1,6 @@ 'use strict'; -const Launcher = false; // require('./launcher'); +const Launcher = require('./launcher'); const StringUtil = require('../util/string-util'); const Logger = require('../util/logger'); @@ -12,7 +12,7 @@ const SettingsStore = { return `${key}.json`; }, - load: function(key, callback, error) { + load: function(key, callback) { try { if (Launcher) { const settingsFile = Launcher.getUserDataPath(this.fileName(key)); @@ -20,7 +20,9 @@ const SettingsStore = { if (exists) { Launcher.readFile(settingsFile, data => { callback(JSON.parse(data)); - }, error); + }, err => { // eslint-disable-line handle-callback-err + callback(undefined); + }); } }); } else { @@ -32,13 +34,14 @@ const SettingsStore = { } }, - save: function(key, data, callback, error) { + save: function(key, data, callback) { try { if (Launcher) { const settingsFile = Launcher.getUserDataPath(this.fileName(key)); - Launcher.writeFile(settingsFile, JSON.stringify(data), callback, error); + Launcher.writeFile(settingsFile, JSON.stringify(data), callback, callback); } else if (typeof localStorage !== 'undefined') { localStorage[StringUtil.camelCase(key)] = JSON.stringify(data); + callback && callback(); } } catch (e) { logger.error(`Error saving ${key}`, e); diff --git a/app/scripts/models/app-settings-model.js b/app/scripts/models/app-settings-model.js index 2c04e6c0..ac00e931 100644 --- a/app/scripts/models/app-settings-model.js +++ b/app/scripts/models/app-settings-model.js @@ -46,7 +46,10 @@ const AppSettingsModel = Backbone.Model.extend({ }, load: function() { - const data = SettingsStore.load('app-settings'); + SettingsStore.load('app-settings', this.onLoaded.bind(this)); + }, + + onLoaded: function(data) { if (data) { this.upgrade(data); } diff --git a/app/scripts/models/runtime-data-model.js b/app/scripts/models/runtime-data-model.js index 2fe6fb4a..dcf8c176 100644 --- a/app/scripts/models/runtime-data-model.js +++ b/app/scripts/models/runtime-data-model.js @@ -11,7 +11,10 @@ const RuntimeDataModel = Backbone.Model.extend({ }, load: function() { - const data = SettingsStore.load('runtime-data'); + SettingsStore.load('runtime-data', this.onLoaded.bind(this)); + }, + + onLoaded: function(data) { if (data) { this.set(data, {silent: true}); } diff --git a/app/scripts/models/update-model.js b/app/scripts/models/update-model.js index 79696402..17f93222 100644 --- a/app/scripts/models/update-model.js +++ b/app/scripts/models/update-model.js @@ -21,7 +21,10 @@ const UpdateModel = Backbone.Model.extend({ }, load: function() { - const data = SettingsStore.load('update-info'); + SettingsStore.load('update-info', this.onLoaded.bind(this)); + }, + + onLoaded: function(data) { if (data) { try { _.each(data, (val, key) => { diff --git a/app/scripts/storage/index.js b/app/scripts/storage/index.js index 0538c128..ea8f9ad5 100644 --- a/app/scripts/storage/index.js +++ b/app/scripts/storage/index.js @@ -2,13 +2,24 @@ const Launcher = require('../comp/launcher'); -const Storage = { +const FileStorage = { file: require('./storage-file'), - dropbox: require('./storage-dropbox'), - webdav: require('./storage-webdav'), - gdrive: require('./storage-gdrive'), - onedrive: require('./storage-onedrive'), cache: Launcher ? require('./storage-file-cache') : require('./storage-cache') }; +const ThirdPartyStorage = { + dropbox: require('./storage-dropbox'), + webdav: require('./storage-webdav'), + gdrive: require('./storage-gdrive'), + onedrive: require('./storage-onedrive') +}; + +let Storage = []; + +if (window.cordova) { + Storage = FileStorage; +} else { + Storage = FileStorage.concat(ThirdPartyStorage); +} + module.exports = Storage;