diff --git a/package.json b/package.json index 9c1253e6f..affe80fff 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,9 @@ "window": { "title": "Copay - A multisignature bitcoin wallet", "icon": "./public/img/icons/icon-256.png", - "toolbar": false, "show": true, "visible": true, - "resizable": false, + "resizable": true, "frame": true, "width": 800, "height": 600, @@ -30,7 +29,7 @@ "java": false, "plugin": false }, - "dom_storage_quota": 100, + "dom_storage_quota": 200, "id": "jid1-x7bV5evAaI1P9Q", "homepage": "https://github.com/bitpay/copay", "license": "MIT", diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index be1713459..9b5c213af 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -20,6 +20,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r ret.prevState = 'walletHome'; ret.physicalScreenWidth = ((window.innerWidth > 0) ? window.innerWidth : screen.width); + // Only for testing + //storageService.checkQuota(); + ret.menu = [{ 'title': gettext('Receive'), 'icon': { diff --git a/src/js/services/localStorage.js b/src/js/services/localStorage.js index 17ab3a27d..2b629ae2e 100644 --- a/src/js/services/localStorage.js +++ b/src/js/services/localStorage.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.services') - .factory('localStorageService', function(platformInfo, $timeout) { + .factory('localStorageService', function(platformInfo, $timeout, $log) { var isNW = platformInfo.isNW; var isChromeApp = platformInfo.isChromeApp; var root = {}; @@ -11,11 +11,12 @@ angular.module('copayApp.services') ls = chrome.storage.local; } + if (!ls) throw new Error('localstorage not available'); root.get = function(k, cb) { - if (isChromeApp && !isNW) { + if (isChromeApp || isNW) { chrome.storage.local.get(k, function(data) { //TODO check for errors @@ -41,7 +42,7 @@ angular.module('copayApp.services') }; root.set = function(k, v, cb) { - if (isChromeApp && !isNW) { + if (isChromeApp || isNW) { var obj = {}; obj[k] = v; @@ -54,7 +55,7 @@ angular.module('copayApp.services') }; root.remove = function(k, cb) { - if (isChromeApp && !isNW) { + if (isChromeApp || isNW) { chrome.storage.local.remove(k, cb); } else { ls.removeItem(k); @@ -63,5 +64,37 @@ angular.module('copayApp.services') }; + + if (isNW) { + $log.info('Overwritting localstorage with chrome storage for NW.JS'); + + var ts = ls.getItem('migrationToChromeStorage'); + var p = ls.getItem('profile'); + + // Need migration? + if (!ts && p) { + $log.info('### MIGRATING DATA! TO CHROME STORAGE'); + + var j = 0; + for (var i = 0; i < localStorage.length; i++) { + var k = ls.key(i); + var v = ls.getItem(k); + + $log.debug(' Key: ' + k); + root.set(k, v, function() { + j++; + if (j == localStorage.length) { + $log.info('### MIGRATION DONE'); + ls.setItem('migrationToChromeStorage', Date.now()) + ls = chrome.storage.local; + } + }) + } + } else if (p) { + $log.info('# Data already migrated to Chrome storage on ' + ts); + } + } + + return root; }); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 1de5ec21e..33eaa819c 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -264,8 +264,26 @@ angular.module('copayApp.services') storage.remove('addressbook-' + network, cb); }; + + root.checkQuota = function() { + var block = ''; + // 50MB + for (var i = 0; i < 1024*1024; ++ i){ + block += '12345678901234567890123456789012345678901234567890'; + } + storage.set('test', block, function(err) { + $log.error('CheckQuota Return:'+ err); + }); + }; + root.setTxHistory = function(txs, walletId, cb) { - storage.set('txsHistory-' + walletId, txs, cb); + try { + storage.set('txsHistory-' + walletId, txs, cb); + } catch (e) { + $log.error('Error saving tx History. Size:' + txs.length); + $log.error(e); + return cb(e); + } } root.getTxHistory = function(walletId, cb) {