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',
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.n = $scope.wallet.n;
var keys;
@ -92,7 +98,8 @@ angular.module('copayApp.controllers').controller('backupController',
$ionicHistory.removeBackView();
$state.go('tabs.home');
} else $state.go('onboarding.disclaimer', {
walletId: $stateParams.walletId,
bchWalletId: $stateParams.bchWalletId,
btcWalletId: $stateParams.btcWalletId,
backedUp: true
});
});
@ -138,6 +145,9 @@ angular.module('copayApp.controllers').controller('backupController',
}
profileService.setBackupFlag($scope.wallet.credentials.walletId);
if ($scope.btcWallet) {
profileService.setBackupFlag($scope.btcWallet.credentials.walletId);
}
return cb();
}, 1);
};

View file

@ -2,7 +2,8 @@
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() {
$ionicConfig.views.swipeBackEnabled(false);
@ -27,7 +28,8 @@ angular.module('copayApp.controllers').controller('backupRequestController', fun
popupService.showConfirm(title, message, okText, cancelText, function(val) {
if (val) {
$state.go('onboarding.disclaimer', {
walletId: $scope.walletId,
bchWalletId: $scope.bchWalletId,
btcWalletId: $scope.btcWalletId,
backedUp: false
});
}

View file

@ -2,8 +2,15 @@
angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $timeout, $stateParams, $ionicModal) {
$scope.walletId = $stateParams.walletId;
$scope.fromState = $stateParams.from == 'onboarding' ? $stateParams.from + '.backupRequest' : $stateParams.from;
if ($stateParams.from == 'onboarding') {
$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.openPopup = function() {
@ -19,17 +26,30 @@ angular.module('copayApp.controllers').controller('backupWarningController', fun
$scope.close = function() {
$scope.warningModal.remove();
$timeout(function() {
$state.go($scope.toState, {
walletId: $scope.walletId
});
if ($stateParams.from == 'onboarding') {
$state.go($scope.toState, {
bchWalletId: $scope.bchWalletId,
btcWalletId: $scope.btcWalletId
});
} else {
$state.go($scope.toState, {
walletId: $scope.walletId
});
}
}, 200);
};
}
$scope.goBack = function() {
$state.go($scope.fromState, {
walletId: $scope.walletId
});
if ($stateParams.from == 'onboarding') {
$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) {
var wallet, walletId;
var bchWalletId;
var btcWalletId;
var bchWallet;
var btcWallet;
$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/
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) {
walletId = data.stateParams.walletId;
wallet = profileService.getWallet(walletId);
bchWalletId = data.stateParams.bchWalletId;
btcWalletId = data.stateParams.btcWalletId;
bchWallet = profileService.getWallet(bchWalletId);
btcWallet = profileService.getWallet(btcWalletId);
$scope.data.accept = true;
});
@ -56,7 +63,7 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
enabled: enabled,
email: enabled ? $scope.data.email : null
});
if ($scope.data.accept) collectEmail();
$timeout(function() {
@ -67,7 +74,8 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
$scope.goNextView = function() {
$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() {
$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() {
ongoingProcess.set('creatingWallet', true);
$timeout(function() {
profileService.createDefaultWallet(function(err, walletClient) {
profileService.createDefaultWallet(function(err, walletClients) {
if (err) {
$log.warn(err);
@ -60,18 +60,16 @@ angular.module('copayApp.controllers').controller('tourController',
}, 2000);
};
ongoingProcess.set('creatingWallet', false);
var wallet = walletClient;
var walletId = wallet.credentials.walletId;
var bchWallet = walletClients[0];
var btcWallet = walletClients[1];
var bchWalletId = bchWallet.credentials.walletId;
var btcWalletId = btcWallet.credentials.walletId;
$state.go('onboarding.collectEmail', {
walletId: walletId
bchWalletId: bchWalletId,
btcWalletId: btcWalletId
});
/*
$state.go('onboarding.backupRequest', {
walletId: walletId
});
*/
});
}, 300);
};

View file

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

View file

@ -427,12 +427,6 @@ angular.module('copayApp.services')
}, function(err, secret) {
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);
});
});
@ -489,7 +483,6 @@ angular.module('copayApp.services')
return root.wallet[walletId];
};
root.deleteWalletClient = function(client, cb) {
var walletId = client.credentials.walletId;
@ -728,12 +721,12 @@ angular.module('copayApp.services')
root.createDefaultWallet = function(cb) {
var defaults = configService.getDefaults();
var opts = {};
opts.m = 1;
opts.n = 1;
opts.networkName = 'livenet';
opts.coin = 'bch';
opts.bwsurl = defaults.bwscash.url;
var bchOpts = {};
bchOpts.m = 1;
bchOpts.n = 1;
bchOpts.networkName = 'livenet';
bchOpts.coin = 'bch';
bchOpts.bwsurl = defaults.bwscash.url;
var btcOpts = {};
btcOpts.m = 1;
@ -741,9 +734,15 @@ angular.module('copayApp.services')
btcOpts.networkName = 'livenet';
btcOpts.coin = 'btc';
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) {