both bch and btc wallets now backed up on first use

This commit is contained in:
Kadir Sekha 2017-11-30 14:36:31 +09:00
commit 9759e25a75
8 changed files with 87 additions and 49 deletions

View file

@ -2,7 +2,13 @@
angular.module('copayApp.controllers').controller('backupController', angular.module('copayApp.controllers').controller('backupController',
function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, lodash, profileService, bwcService, walletService, ongoingProcess, popupService, gettextCatalog, $ionicModal, firebaseEventsService) { function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, lodash, profileService, bwcService, walletService, ongoingProcess, popupService, gettextCatalog, $ionicModal, firebaseEventsService) {
$scope.wallet = profileService.getWallet($stateParams.walletId); if ($stateParams.bchWalletId && $stateParams.btcWalletId) {
$scope.wallet = profileService.getWallet($stateParams.bchWalletId);
$scope.btcWallet = profileService.getWallet($stateParams.btcWalletId);
} else {
$scope.wallet = profileService.getWallet($stateParams.walletId);
}
$scope.viewTitle = $scope.wallet.name || $scope.wallet.credentials.walletName; $scope.viewTitle = $scope.wallet.name || $scope.wallet.credentials.walletName;
$scope.n = $scope.wallet.n; $scope.n = $scope.wallet.n;
var keys; var keys;
@ -92,7 +98,8 @@ angular.module('copayApp.controllers').controller('backupController',
$ionicHistory.removeBackView(); $ionicHistory.removeBackView();
$state.go('tabs.home'); $state.go('tabs.home');
} else $state.go('onboarding.disclaimer', { } else $state.go('onboarding.disclaimer', {
walletId: $stateParams.walletId, bchWalletId: $stateParams.bchWalletId,
btcWalletId: $stateParams.btcWalletId,
backedUp: true backedUp: true
}); });
}); });
@ -138,6 +145,9 @@ angular.module('copayApp.controllers').controller('backupController',
} }
profileService.setBackupFlag($scope.wallet.credentials.walletId); profileService.setBackupFlag($scope.wallet.credentials.walletId);
if ($scope.btcWallet) {
profileService.setBackupFlag($scope.btcWallet.credentials.walletId);
}
return cb(); return cb();
}, 1); }, 1);
}; };

View file

@ -2,7 +2,8 @@
angular.module('copayApp.controllers').controller('backupRequestController', function($scope, $state, $stateParams, $ionicConfig, popupService, gettextCatalog) { angular.module('copayApp.controllers').controller('backupRequestController', function($scope, $state, $stateParams, $ionicConfig, popupService, gettextCatalog) {
$scope.walletId = $stateParams.walletId; $scope.bchWalletId = $stateParams.bchWalletId;
$scope.btcWalletId = $stateParams.btcWalletId;
$scope.$on("$ionicView.enter", function() { $scope.$on("$ionicView.enter", function() {
$ionicConfig.views.swipeBackEnabled(false); $ionicConfig.views.swipeBackEnabled(false);
@ -27,7 +28,8 @@ angular.module('copayApp.controllers').controller('backupRequestController', fun
popupService.showConfirm(title, message, okText, cancelText, function(val) { popupService.showConfirm(title, message, okText, cancelText, function(val) {
if (val) { if (val) {
$state.go('onboarding.disclaimer', { $state.go('onboarding.disclaimer', {
walletId: $scope.walletId, bchWalletId: $scope.bchWalletId,
btcWalletId: $scope.btcWalletId,
backedUp: false backedUp: false
}); });
} }

View file

@ -2,8 +2,15 @@
angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $timeout, $stateParams, $ionicModal) { angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $timeout, $stateParams, $ionicModal) {
$scope.walletId = $stateParams.walletId; if ($stateParams.from == 'onboarding') {
$scope.fromState = $stateParams.from == 'onboarding' ? $stateParams.from + '.backupRequest' : $stateParams.from; $scope.bchWalletId = $stateParams.bchWalletId;
$scope.btcWalletId = $stateParams.btcWalletId;
$scope.fromState = $stateParams.from + '.backupRequest' ;
} else {
$scope.walletId = $stateParams.walletId;
$scope.fromState = $stateParams.from;
}
$scope.toState = $stateParams.from + '.backup'; $scope.toState = $stateParams.from + '.backup';
$scope.openPopup = function() { $scope.openPopup = function() {
@ -19,17 +26,30 @@ angular.module('copayApp.controllers').controller('backupWarningController', fun
$scope.close = function() { $scope.close = function() {
$scope.warningModal.remove(); $scope.warningModal.remove();
$timeout(function() { $timeout(function() {
$state.go($scope.toState, { if ($stateParams.from == 'onboarding') {
walletId: $scope.walletId $state.go($scope.toState, {
}); bchWalletId: $scope.bchWalletId,
btcWalletId: $scope.btcWalletId
});
} else {
$state.go($scope.toState, {
walletId: $scope.walletId
});
}
}, 200); }, 200);
}; };
} }
$scope.goBack = function() { $scope.goBack = function() {
$state.go($scope.fromState, { if ($stateParams.from == 'onboarding') {
walletId: $scope.walletId $state.go($scope.toState, {
}); bchWalletId: $scope.bchWalletId,
btcWalletId: $scope.btcWalletId
});
} else {
$state.go($scope.fromState, {
walletId: $scope.walletId
});
}
}; };
}); });

View file

@ -2,7 +2,11 @@
angular.module('copayApp.controllers').controller('collectEmailController', function($scope, $state, $log, $timeout, $http, $httpParamSerializer, $ionicConfig, profileService, configService, walletService, appConfigService, emailService) { angular.module('copayApp.controllers').controller('collectEmailController', function($scope, $state, $log, $timeout, $http, $httpParamSerializer, $ionicConfig, profileService, configService, walletService, appConfigService, emailService) {
var wallet, walletId; var bchWalletId;
var btcWalletId;
var bchWallet;
var btcWallet;
$scope.data = {}; $scope.data = {};
// Get more info: https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/ // Get more info: https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/
var URL = "https://script.google.com/macros/s/AKfycbyuuLpN7UvtMMHv2BNLfZ7N2m4y4N6MeTpGRGFvnkGHFr9SM60/exec"; var URL = "https://script.google.com/macros/s/AKfycbyuuLpN7UvtMMHv2BNLfZ7N2m4y4N6MeTpGRGFvnkGHFr9SM60/exec";
@ -27,8 +31,11 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
}); });
$scope.$on("$ionicView.beforeEnter", function(event, data) { $scope.$on("$ionicView.beforeEnter", function(event, data) {
walletId = data.stateParams.walletId; bchWalletId = data.stateParams.bchWalletId;
wallet = profileService.getWallet(walletId); btcWalletId = data.stateParams.btcWalletId;
bchWallet = profileService.getWallet(bchWalletId);
btcWallet = profileService.getWallet(btcWalletId);
$scope.data.accept = true; $scope.data.accept = true;
}); });
@ -56,7 +63,7 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
enabled: enabled, enabled: enabled,
email: enabled ? $scope.data.email : null email: enabled ? $scope.data.email : null
}); });
if ($scope.data.accept) collectEmail(); if ($scope.data.accept) collectEmail();
$timeout(function() { $timeout(function() {
@ -67,7 +74,8 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
$scope.goNextView = function() { $scope.goNextView = function() {
$state.go('onboarding.backupRequest', { $state.go('onboarding.backupRequest', {
walletId: walletId bchWalletId: bchWalletId,
btcWalletId: btcWalletId
}); });
}; };

View file

@ -46,7 +46,8 @@ angular.module('copayApp.controllers').controller('disclaimerController', functi
$scope.goBack = function() { $scope.goBack = function() {
$state.go('onboarding.backupRequest', { $state.go('onboarding.backupRequest', {
walletId: $stateParams.walletId bchWalletId: $stateParams.bchWalletId,
btcWalletId: $stateParams.btcWalletId
}); });
} }

View file

@ -40,7 +40,7 @@ angular.module('copayApp.controllers').controller('tourController',
$scope.createDefaultWallet = function() { $scope.createDefaultWallet = function() {
ongoingProcess.set('creatingWallet', true); ongoingProcess.set('creatingWallet', true);
$timeout(function() { $timeout(function() {
profileService.createDefaultWallet(function(err, walletClient) { profileService.createDefaultWallet(function(err, walletClients) {
if (err) { if (err) {
$log.warn(err); $log.warn(err);
@ -60,18 +60,16 @@ angular.module('copayApp.controllers').controller('tourController',
}, 2000); }, 2000);
}; };
ongoingProcess.set('creatingWallet', false); ongoingProcess.set('creatingWallet', false);
var wallet = walletClient; var bchWallet = walletClients[0];
var walletId = wallet.credentials.walletId; var btcWallet = walletClients[1];
var bchWalletId = bchWallet.credentials.walletId;
var btcWalletId = btcWallet.credentials.walletId;
$state.go('onboarding.collectEmail', { $state.go('onboarding.collectEmail', {
walletId: walletId bchWalletId: bchWalletId,
btcWalletId: btcWalletId
}); });
/*
$state.go('onboarding.backupRequest', {
walletId: walletId
});
*/
}); });
}, 300); }, 300);
}; };

View file

@ -774,7 +774,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
} }
}) })
.state('onboarding.collectEmail', { .state('onboarding.collectEmail', {
url: '/collectEmail/:walletId', url: '/collectEmail/:bchWalletId/:btcWalletId',
views: { views: {
'onboarding': { 'onboarding': {
templateUrl: 'views/onboarding/collectEmail.html', templateUrl: 'views/onboarding/collectEmail.html',
@ -783,7 +783,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
} }
}) })
.state('onboarding.backupRequest', { .state('onboarding.backupRequest', {
url: '/backupRequest/:walletId', url: '/backupRequest/:bchWalletId/:btcWalletId',
views: { views: {
'onboarding': { 'onboarding': {
templateUrl: 'views/onboarding/backupRequest.html', templateUrl: 'views/onboarding/backupRequest.html',
@ -792,7 +792,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
} }
}) })
.state('onboarding.backupWarning', { .state('onboarding.backupWarning', {
url: '/backupWarning/:from/:walletId', url: '/backupWarning/:from/:walletId/:bchWalletId/:btcWalletId',
views: { views: {
'onboarding': { 'onboarding': {
templateUrl: 'views/backupWarning.html', templateUrl: 'views/backupWarning.html',
@ -801,7 +801,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
} }
}) })
.state('onboarding.backup', { .state('onboarding.backup', {
url: '/backup/:walletId', url: '/backup/:walletId/:bchWalletId/:btcWalletId',
views: { views: {
'onboarding': { 'onboarding': {
templateUrl: 'views/backup.html', templateUrl: 'views/backup.html',
@ -810,7 +810,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
} }
}) })
.state('onboarding.disclaimer', { .state('onboarding.disclaimer', {
url: '/disclaimer/:walletId/:backedUp/:resume', url: '/disclaimer/:bchWalletId/:btcWalletId/:backedUp/:resume',
views: { views: {
'onboarding': { 'onboarding': {
templateUrl: 'views/onboarding/disclaimer.html', templateUrl: 'views/onboarding/disclaimer.html',

View file

@ -427,12 +427,6 @@ angular.module('copayApp.services')
}, function(err, secret) { }, function(err, secret) {
if (err) return bwcError.cb(err, gettextCatalog.getString('Error creating wallet'), cb); if (err) return bwcError.cb(err, gettextCatalog.getString('Error creating wallet'), cb);
if (opts.btcOpts) {
opts.btcOpts.singleAddress = opts.singleAddress;
opts.btcOpts.mnemonic = walletClient.credentials.mnemonic;
root.createWallet(opts.btcOpts, null);
}
return cb(null, walletClient, secret); return cb(null, walletClient, secret);
}); });
}); });
@ -489,7 +483,6 @@ angular.module('copayApp.services')
return root.wallet[walletId]; return root.wallet[walletId];
}; };
root.deleteWalletClient = function(client, cb) { root.deleteWalletClient = function(client, cb) {
var walletId = client.credentials.walletId; var walletId = client.credentials.walletId;
@ -728,12 +721,12 @@ angular.module('copayApp.services')
root.createDefaultWallet = function(cb) { root.createDefaultWallet = function(cb) {
var defaults = configService.getDefaults(); var defaults = configService.getDefaults();
var opts = {}; var bchOpts = {};
opts.m = 1; bchOpts.m = 1;
opts.n = 1; bchOpts.n = 1;
opts.networkName = 'livenet'; bchOpts.networkName = 'livenet';
opts.coin = 'bch'; bchOpts.coin = 'bch';
opts.bwsurl = defaults.bwscash.url; bchOpts.bwsurl = defaults.bwscash.url;
var btcOpts = {}; var btcOpts = {};
btcOpts.m = 1; btcOpts.m = 1;
@ -741,9 +734,15 @@ angular.module('copayApp.services')
btcOpts.networkName = 'livenet'; btcOpts.networkName = 'livenet';
btcOpts.coin = 'btc'; btcOpts.coin = 'btc';
btcOpts.bwsurl = defaults.bws.url; btcOpts.bwsurl = defaults.bws.url;
opts.btcOpts = btcOpts;
root.createWallet(opts, cb); root.createWallet(bchOpts, function(bchErr, bchWalletClient) {
if (bchErr) return cb(bchErr);
btcOpts.mnemonic = bchWalletClient.credentials.mnemonic;
root.createWallet(btcOpts, function(btcErr, btcWalletClient) {
if (btcErr) return cb(btcErr);
return cb(null, [bchWalletClient, btcWalletClient]);
});
});
}; };
root.setDisclaimerAccepted = function(cb) { root.setDisclaimerAccepted = function(cb) {