From b0967e0628f39a8b271251ddd0c551272aac5f14 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 11:01:15 -0300 Subject: [PATCH 1/8] write file not as blobs --- src/js/services/fileStorage.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/js/services/fileStorage.js b/src/js/services/fileStorage.js index 2a14db7a5..6caf360d1 100644 --- a/src/js/services/fileStorage.js +++ b/src/js/services/fileStorage.js @@ -81,10 +81,7 @@ angular.module('copayApp.services') v = JSON.stringify(v); $log.debug('Writing:', k, v); - var blob = new Blob([v], { - type: "text/plain" - }); - fileWriter.write(blob); + fileWriter.write(v); }, cb); }); From 28125773c8aef6525fc773c2b4838cba4c6deb10 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 11:28:11 -0300 Subject: [PATCH 2/8] add logs --- src/js/services/fileStorage.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/js/services/fileStorage.js b/src/js/services/fileStorage.js index 6caf360d1..b669e2686 100644 --- a/src/js/services/fileStorage.js +++ b/src/js/services/fileStorage.js @@ -102,6 +102,9 @@ angular.module('copayApp.services') // url = 'ms-appdata:///local/'; window.resolveLocalFileSystemURL(url, function(dir) { return cb(null, dir); + }, function(err) { + $log.warn(err); + return cb(err || 'Could not resolve filesystem:' + url); }); }; From 20b7a851d364623076e768857b57dbac3e5dd629 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 12:35:26 -0300 Subject: [PATCH 3/8] open dir only once --- src/js/controllers/index.js | 4 +- src/js/services/fileStorage.js | 125 ++++++++++++++++----------------- 2 files changed, 64 insertions(+), 65 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 82c5cfb63..b9c26d625 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -569,7 +569,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r $rootScope.$on('Local/BackupDone', function(event) { self.needsBackup = false; - storageService.setBackupFlag(self.walletId, function() {}); + storageService.setBackupFlag(self.walletId, function(err) { + if (err) $rootScope.$emit('Local/DeviceError', err) + }); }); $rootScope.$on('Local/NotAuthorized', function(event) { diff --git a/src/js/services/fileStorage.js b/src/js/services/fileStorage.js index b669e2686..edaf6aa6f 100644 --- a/src/js/services/fileStorage.js +++ b/src/js/services/fileStorage.js @@ -3,16 +3,20 @@ angular.module('copayApp.services') .factory('fileStorageService', function(lodash, $log) { var root = {}, - fs; - + _fs, _dir; root.init = function(cb) { - if (fs) return cb(null, fs); + if (_dir) return cb(null, _fs, _dir); function onFileSystemSuccess(fileSystem) { console.log('File system started: ', fileSystem.name, fileSystem.root.name); - fs = fileSystem; - return cb(null, fs); + _fs = fileSystem; + root.getDir(function(err, newDir) { + if (err || !newDir.nativeURL) return cb(err); + _dir = newDir + $log.debug("Got main dir:", _dir.nativeURL); + return cb(null, _fs, _dir); + }); } function fail(evt) { @@ -24,67 +28,64 @@ angular.module('copayApp.services') window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); }; - root.get = function(k, cb) { - root.init(function(err, fs) { + root.init(function(err, fs, dir) { if (err) return cb(err); - root.getDir(function(err, dir) { - if (err) return cb(err); - $log.debug(".get: Got main dir:", dir.nativeURL); - dir.getFile(k, { - create: false, - }, function(fileEntry) { - if (!fileEntry) return cb(); - fileEntry.file(function(file) { - var reader = new FileReader(); + dir.getFile(k, { + create: false, + }, function(fileEntry) { + if (!fileEntry) return cb(); + fileEntry.file(function(file) { + var reader = new FileReader(); - reader.onloadend = function(e) { - if (this.result) - $log.debug("Read: ", this.result); - return cb(null, this.result) - } + reader.onloadend = function(e) { + if (this.result) + $log.debug("Read: ", this.result); + return cb(null, this.result) + } - reader.readAsText(file); - }); - }, function(err) { - // Not found - if (err.code == 1) return cb(); - else return cb(err); + reader.readAsText(file); }); + }, function(err) { + // Not found + if (err.code == 1) return cb(); + else return cb(err); }); }) }; root.set = function(k, v, cb) { - root.init(function(err, fs) { + root.init(function(err, fs, dir) { if (err) return cb(err); - root.getDir(function(err, dir) { - if (err) return cb(err); - $log.debug(".set: Got main dir:", dir.nativeURL); - dir.getFile(k, { - create: true, - }, function(fileEntry) { - // Create a FileWriter object for our FileEntry (log.txt). - fileEntry.createWriter(function(fileWriter) { +console.log('[fileStorage.js.58:dir:]',dir.nativeURL); //TODO + dir.getFile(k, { + create: true, + }, function(fileEntry) { + // Create a FileWriter object for our FileEntry (log.txt). + fileEntry.createWriter(function(fileWriter) { - fileWriter.onwriteend = function(e) { - console.log('Write completed.'); - return cb(); - }; + fileWriter.onwriteend = function(e) { + console.log('Write completed.'); + return cb(); + }; - fileWriter.onerror = function(e) { - console.log('Write failed: ' + e.toString()); - return cb('Fail to write:', e.toString()); - }; + fileWriter.onerror = function(e) { + var err = e.error ? e.error : JSON.stringify(e); + console.log('Write failed: ' + err); + return cb('Fail to write:' + err); + }; - if (lodash.isObject(v)) - v = JSON.stringify(v); + if (lodash.isObject(v)) + v = JSON.stringify(v); - $log.debug('Writing:', k, v); - fileWriter.write(v); + if (!lodash.isString(v)){ + v = v.toString(); + } - }, cb); - }); + $log.debug('Writing:', k, v); + fileWriter.write(v); + + }, cb); }); }); }; @@ -104,24 +105,21 @@ angular.module('copayApp.services') return cb(null, dir); }, function(err) { $log.warn(err); - return cb(err || 'Could not resolve filesystem:' + url); + return cb(err || 'Could not resolve filesystem:' + url); }); }; root.remove = function(k, cb) { - root.init(function(err, fs) { + root.init(function(err, fs, dir) { if (err) return cb(err); - root.getDir(function(err, dir) { - if (err) return cb(err); - dir.getFile(k, { - create: false, - }, function(fileEntry) { - // Create a FileWriter object for our FileEntry (log.txt). - fileEntry.remove(function() { - console.log('File removed.'); - return cb(); - }, cb, cb); - }); + dir.getFile(k, { + create: false, + }, function(fileEntry) { + // Create a FileWriter object for our FileEntry (log.txt). + fileEntry.remove(function() { + console.log('File removed.'); + return cb(); + }, cb, cb); }); }); }; @@ -140,6 +138,5 @@ angular.module('copayApp.services') }); }; - return root; }); From 22f58fde7939de6ea056f838a904a3f0f342a555 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 13:11:32 -0300 Subject: [PATCH 4/8] fix refresh at update color --- src/js/controllers/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index b9c26d625..bbd4912e0 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -533,6 +533,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r // UX event handlers $rootScope.$on('Local/ColorUpdated', function(event) { self.updateColor(); + $timeout(function() { + $rootScope.$apply(); + }); }); $rootScope.$on('Local/UnitSettingUpdated', function(event) { From b74c01f5b768e7b83e86886e83c3d5e0eba4899c Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 13:15:24 -0300 Subject: [PATCH 5/8] rm log --- src/js/services/fileStorage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/js/services/fileStorage.js b/src/js/services/fileStorage.js index edaf6aa6f..3bcc8c2ac 100644 --- a/src/js/services/fileStorage.js +++ b/src/js/services/fileStorage.js @@ -57,7 +57,6 @@ angular.module('copayApp.services') root.set = function(k, v, cb) { root.init(function(err, fs, dir) { if (err) return cb(err); -console.log('[fileStorage.js.58:dir:]',dir.nativeURL); //TODO dir.getFile(k, { create: true, }, function(fileEntry) { From dc7676e4b009299ed50caf924d26ddd8a6827024 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 14:11:52 -0300 Subject: [PATCH 6/8] better error on recreate --- src/js/controllers/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index bbd4912e0..f1c3e5119 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -448,7 +448,8 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.setOngoingProcess('recreating', false); if (err) { - self.clientError('Could not recreate wallet:' + err); + $log.error(err); + self.clientError('Could not recreate wallet:' + (err.error ? err.error : err)); $rootScope.$apply(); return; } From e844086ac40c7a821e160b0cebd70c71466ddd52 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 14:14:51 -0300 Subject: [PATCH 7/8] better error on recreate2 --- src/js/controllers/index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index f1c3e5119..e8b4c5481 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -246,13 +246,13 @@ angular.module('copayApp.controllers').controller('indexController', function($r }; self.handleError = function(err) { - $log.debug('ERROR:', err); + $log.warn('Client ERROR:', err); if (err.code === 'NOTAUTHORIZED') { $scope.$emit('Local/NotAuthorized'); } else if (err.code === 'NOTFOUND') { $scope.$emit('Local/BWSNotFound'); } else { - $scope.$emit('Local/ClientError', err); + $scope.$emit('Local/ClientError', (err.error ? err.error : err); } }; self.openWallet = function() { @@ -448,8 +448,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.setOngoingProcess('recreating', false); if (err) { - $log.error(err); - self.clientError('Could not recreate wallet:' + (err.error ? err.error : err)); + self.handleError(err); $rootScope.$apply(); return; } @@ -486,7 +485,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r if (err) { if (self.walletId == walletId) self.setOngoingProcess('scanning', false); - self.clientError('Could not scan wallet:' + err); + self.handleError(err); $rootScope.$apply(); } }); From 138d44f38b2a1656432423e08f6fc486779acc87 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 27 Apr 2015 14:18:22 -0300 Subject: [PATCH 8/8] fix syntax --- src/js/controllers/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index e8b4c5481..f094c12f4 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -252,7 +252,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r } else if (err.code === 'NOTFOUND') { $scope.$emit('Local/BWSNotFound'); } else { - $scope.$emit('Local/ClientError', (err.error ? err.error : err); + $scope.$emit('Local/ClientError', (err.error ? err.error : err)); } }; self.openWallet = function() {