From 1c40185b0530a9a79fdb9df937d7369d5f113c93 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 13 Oct 2016 10:16:10 -0300 Subject: [PATCH] complete decrypt pk process --- package.json | 2 +- src/js/controllers/export.js | 71 ++++++++++++++++++-------------- src/js/services/walletService.js | 2 +- 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 3a2339ec0..c690d4989 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "angular-mocks": "1.4.10", "bezier-easing": "^2.0.3", "bhttp": "^1.2.1", - "bitcore-wallet-client": "4.3.2", + "bitcore-wallet-client": "4.3.1", "bower": "^1.7.9", "chai": "^3.5.0", "cordova-android": "5.1.1", diff --git a/src/js/controllers/export.js b/src/js/controllers/export.js index 64fa8ba9d..27ebf6705 100644 --- a/src/js/controllers/export.js +++ b/src/js/controllers/export.js @@ -16,22 +16,14 @@ angular.module('copayApp.controllers').controller('exportController', }; function prepareWallet(cb) { - if ($scope.password) return cb($scope.password); + if ($scope.password) return cb(null, $scope.password); walletService.prepare(wallet, function(err, password) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return cb(); - } + if (err) return cb(err); $scope.password = password; walletService.getEncodedWalletInfo(wallet, $scope.password, function(err, code) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Could not decrypt private key')); - return cb(password); - } - - $scope.file.value = false; + if (err) return cb(err); if (!code) $scope.formData.supported = false; @@ -40,10 +32,7 @@ angular.module('copayApp.controllers').controller('exportController', $scope.formData.exportWalletInfo = code; } - $timeout(function() { - $scope.$apply(); - }); - return cb(password); + return cb(null, password); }); }); }; @@ -57,9 +46,19 @@ angular.module('copayApp.controllers').controller('exportController', return; } - prepareWallet(function(password) { + prepareWallet(function(err, password) { + if (err) { + popupService.showAlert(gettextCatalog.getString('Error'), err); + return; + } if (!password) return; + + $scope.file.value = false; $scope.password = password; + + $timeout(function() { + $scope.$apply(); + }); }); }; @@ -72,7 +71,6 @@ angular.module('copayApp.controllers').controller('exportController', $scope.showAdvanced = false; $scope.wallet = wallet; $scope.canSign = wallet.canSign(); - }; /* @@ -98,7 +96,11 @@ angular.module('copayApp.controllers').controller('exportController', }; $scope.downloadWalletBackup = function() { - prepareWallet(function(password) { + prepareWallet(function(err, password) { + if (err) { + popupService.showAlert(gettextCatalog.getString('Error'), err); + return; + } if (!password) return; $scope.getAddressbook(function(err, localAddressBook) { @@ -140,21 +142,30 @@ angular.module('copayApp.controllers').controller('exportController', }; $scope.getBackup = function(cb) { - $scope.getAddressbook(function(err, localAddressBook) { + prepareWallet(function(err, password) { if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - return cb(null); + popupService.showAlert(gettextCatalog.getString('Error'), err); + return; } - var opts = { - noSign: $scope.formData.noSignEnabled, - addressBook: localAddressBook - }; + if (!password) return; - var ew = backupService.walletExport($scope.formData.password, opts); - if (!ew) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - } - return cb(ew); + $scope.getAddressbook(function(err, localAddressBook) { + if (err) { + popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); + return cb(null); + } + var opts = { + noSign: $scope.formData.noSignEnabled, + addressBook: localAddressBook, + password: password + }; + + var ew = backupService.walletExport($scope.formData.password, opts); + if (!ew) { + popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); + } + return cb(ew); + }); }); }; diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js index 593698907..4ea415b0f 100644 --- a/src/js/services/walletService.js +++ b/src/js/services/walletService.js @@ -1000,7 +1000,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim // not supported yet if (wallet.credentials.derivationStrategy != 'BIP44' || !wallet.canSign()) - return null; + return cb(gettextCatalog.getString('Exporting via QR not supported for this wallet')); var keys = root.getKeysWithPassword(wallet, password);