From 5b0e5f51dbe9f625f396c8ea415fd41aa4eb36f5 Mon Sep 17 00:00:00 2001 From: Matias Pando Date: Thu, 4 Dec 2014 17:59:02 -0300 Subject: [PATCH] Chrome App fixes --- js/app.js | 2 +- js/controllers/head.js | 2 -- js/controllers/unsupported.js | 2 -- js/plugins/LocalStorage.js | 60 +++++++++++-------------------- js/routes.js | 2 +- js/services/applicationService.js | 3 +- js/services/notifications.js | 2 +- 7 files changed, 24 insertions(+), 49 deletions(-) diff --git a/js/app.js b/js/app.js index 7814c5547..e2ef9e359 100644 --- a/js/app.js +++ b/js/app.js @@ -3,7 +3,7 @@ var copay = require('copay'); var _ = require('lodash'); var config = defaultConfig; -var LS = require('../plugins/LocalStorage'); +var LS = require('../js/plugins/LocalStorage'); var ls = new LS(); var localConfig; diff --git a/js/controllers/head.js b/js/controllers/head.js index 047b4caca..e5244e867 100644 --- a/js/controllers/head.js +++ b/js/controllers/head.js @@ -4,8 +4,6 @@ angular.module('copayApp.controllers').controller('HeadController', function($sc $scope.username = $rootScope.iden.getName(); $scope.hoverMenu = false; - console.log('$scope.username', $scope.username); - $scope.hoverIn = function() { this.hoverMenu = true; }; diff --git a/js/controllers/unsupported.js b/js/controllers/unsupported.js index 661ca3141..3f6e000b7 100644 --- a/js/controllers/unsupported.js +++ b/js/controllers/unsupported.js @@ -5,10 +5,8 @@ angular.module('copayApp.controllers').controller('UnsupportedController', var localStorage; if (window.chrome && chrome.runtime && chrome.runtime.id) { - console.log('Is a chrome app!..unssoported.js'); localStorage = chrome.storage.local; } else { - console.log('Is web!'); localStorage = window.localStorage; } if (localStorage && localStorage.length > 0) { diff --git a/js/plugins/LocalStorage.js b/js/plugins/LocalStorage.js index a62283c92..10b84293b 100644 --- a/js/plugins/LocalStorage.js +++ b/js/plugins/LocalStorage.js @@ -1,26 +1,32 @@ 'use strict'; var _ = require('lodash'); var preconditions = require('preconditions').singleton(); -var isChromeApp = window.chrome && chrome.runtime && chrome.runtime.id; +var isChromeApp = typeof window !== "undefined" && window.chrome && chrome.runtime && chrome.runtime.id; -function LocalStorage() { +function LocalStorage(opts) { this.type = 'DB'; + opts = opts || {}; - if (isChromeApp) { - localStorage = chrome.storage.local; + + + + this.ls = opts.ls || + ((typeof localStorage !== "undefined") ? localStorage : null); + + if (isChromeApp && !this.ls) { + this.ls = localStorage = chrome.storage.local; window.localStorage = chrome.storage.local; } - preconditions.checkState(typeof localStorage !== 'undefined', + preconditions.checkState(this.ls, 'localstorage not available, cannot run plugin'); }; LocalStorage.prototype.init = function() {}; LocalStorage.prototype.setCredentials = function(email, password, opts) { - this.email = email; - this.password = password; + // NOP }; LocalStorage.prototype.getItem = function(k, cb) { @@ -31,7 +37,7 @@ LocalStorage.prototype.getItem = function(k, cb) { return cb(null, data[k]); }); } else { - return cb(null, localStorage.getItem(k)); + return cb(null, this.ls.getItem(k)); } }; @@ -40,15 +46,11 @@ LocalStorage.prototype.getItem = function(k, cb) { */ LocalStorage.prototype.createItem = function(name, value, callback) { var self = this; - console.log('createItem '); self.getItem(name, function(err, data) { - console.log('error ', err); - console.log('data ', data); if (data) { return callback('EEXISTS'); } else { - console.log('calling setitem '); return self.setItem(name, value, callback); } }); @@ -58,9 +60,10 @@ LocalStorage.prototype.setItem = function(k, v, cb) { if (isChromeApp) { var obj = {}; obj[k] = v; + chrome.storage.local.set(obj, cb); } else { - localStorage.setItem(k, v); + this.ls.setItem(k, v); return cb(); } @@ -70,7 +73,7 @@ LocalStorage.prototype.removeItem = function(k, cb) { if (isChromeApp) { chrome.storage.remove(k, cb); } else { - localStorage.removeItem(k); + this.ls.removeItem(k); return cb(); } @@ -80,50 +83,27 @@ LocalStorage.prototype.clear = function(cb) { if (isChromeApp) { chrome.storage.clear(); } else { - localStorage.clear(); + this.ls.clear(); } return cb(); }; LocalStorage.prototype.allKeys = function(cb) { - if (isChromeApp) { chrome.storage.local.get(null, function(items) { return cb(null, _.keys(items)); }); } else { var ret = []; - var l = localStorage.length; + var l = this.ls.length; for (var i = 0; i < l; i++) - ret.push(localStorage.key(i)); + ret.push(this.ls.key(i)); return cb(null, ret); } }; -LocalStorage.prototype.getFirst = function(prefix, opts, cb) { - opts = opts || {}; - var that = this; - this.allKeys(function(err, allKeys) { - var keys = _.filter(allKeys, function(k) { - if ((k === prefix) || k.indexOf(prefix) === 0) return true; - }); - - if (keys.length === 0) - return cb(new Error('not found')); - - if (opts.onlyKey) - return cb(null, null, keys[0]); - - that.getItem(keys[0], function(err, data) { - if (err) { - return cb(err); - } - return cb(null, data, keys[0]); - }); - }); -}; module.exports = LocalStorage; diff --git a/js/routes.js b/js/routes.js index 0e2daf072..39a207902 100644 --- a/js/routes.js +++ b/js/routes.js @@ -1,6 +1,6 @@ 'use strict'; -var LS = require('../plugins/LocalStorage'); +var LS = require('../js/plugins/LocalStorage'); var ls = new LS(); //Setting up route diff --git a/js/services/applicationService.js b/js/services/applicationService.js index f1f6fd7d6..6b7f581a1 100644 --- a/js/services/applicationService.js +++ b/js/services/applicationService.js @@ -11,8 +11,7 @@ angular.module('copayApp.services') // Go home reloading the application var hashIndex = window.location.href.indexOf('#!/'); if (isChromeApp) { - console.log('isChromeApp restting '); - chrome.runtime.restart(); + chrome.runtime.reload(); } else { window.location = window.location.href.substr(0, hashIndex); } diff --git a/js/services/notifications.js b/js/services/notifications.js index a112af873..7e602c4f9 100644 --- a/js/services/notifications.js +++ b/js/services/notifications.js @@ -1,6 +1,6 @@ 'use strict'; -var LS = require('../plugins/LocalStorage'); +var LS = require('../js/plugins/LocalStorage'); var ls = new LS(); angular.module('copayApp.services').