diff --git a/public/views/join.html b/public/views/join.html index 2f0a3f74c..6798b95bb 100644 --- a/public/views/join.html +++ b/public/views/join.html @@ -13,37 +13,33 @@
-
-
- -
-
+ -
-
- + Show advanced options diff --git a/src/js/controllers/addressbookView.js b/src/js/controllers/addressbookView.js index b62289039..ec91fe3a3 100644 --- a/src/js/controllers/addressbookView.js +++ b/src/js/controllers/addressbookView.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('addressbookViewController', function($scope, $state, $timeout, $stateParams, lodash, addressbookService, popupService) { +angular.module('copayApp.controllers').controller('addressbookViewController', function($scope, $state, $timeout, $stateParams, lodash, addressbookService, popupService, $ionicHistory) { var address = $stateParams.address; @@ -26,9 +26,10 @@ angular.module('copayApp.controllers').controller('addressbookViewController', f }); $scope.sendTo = function() { - $state.go('^.^.send'); + $ionicHistory.clearHistory(); + $state.go('tabs.send'); $timeout(function() { - $state.go('.amount', { + $state.transitionTo('tabs.send.amount', { toAddress: $scope.addressbookEntry.address, toName: $scope.addressbookEntry.name, toEmail: $scope.addressbookEntry.email diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index 27f474544..e712a8082 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -1,8 +1,7 @@ 'use strict'; -angular.module('copayApp.controllers').controller('amountController', function($rootScope, $scope, $filter, $timeout, $ionicHistory, $ionicScrollDelegate, $ionicNavBarDelegate, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService) { +angular.module('copayApp.controllers').controller('amountController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, $ionicNavBarDelegate, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService) { $ionicNavBarDelegate.title(gettextCatalog.getString('Enter Amount')); - $ionicNavBarDelegate.showBackButton(true); var unitToSatoshi; var satToUnit; diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index 2efc0b42b..80a333a67 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, $ionicNavBarDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, profileService, bitcore, $ionicPopup, gettext, txFormatService, ongoingProcess, $ionicModal, popupService) { +angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, $ionicNavBarDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, profileService, bitcore, $ionicPopup, gettext, txFormatService, ongoingProcess, $ionicModal, $ionicHistory, popupService) { $ionicNavBarDelegate.title(gettextCatalog.getString('Confirm')); var cachedTxp = {}; var isChromeApp = platformInfo.isChromeApp; @@ -77,6 +77,13 @@ angular.module('copayApp.controllers').controller('confirmController', function( }; $scope.init = function() { + if ($stateParams.paypro) { + return setFromPayPro($stateParams.paypro, function(err) { + if (err && !isChromeApp) { + showAlert(gettext('Could not fetch payment')); + } + }); + } // TODO (URL , etc) if (!$stateParams.toAddress || !$stateParams.toAmount) { $log.error('Bad params at amount') @@ -261,7 +268,8 @@ angular.module('copayApp.controllers').controller('confirmController', function( if (err) return; walletService.publishAndSign(wallet, txp, function(err, txp) { if (err) return setSendError(err); - $state.transitionTo('tabs.home'); + $ionicHistory.clearHistory(); + $state.go('tabs.home'); }); }); }; diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index 0fa615321..eaf49165c 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.services').factory('incomingData', function($log, $ionicModal, $state, $window, bitcore) { +angular.module('copayApp.services').factory('incomingData', function($log, $ionicModal, $state, $window, $timeout, bitcore) { var root = {}; @@ -26,7 +26,11 @@ angular.module('copayApp.services').factory('incomingData', function($log, $ioni // data extensions for Payment Protocol with non-backwards-compatible request if ((/^bitcoin:\?r=[\w+]/).exec(data)) { data = decodeURIComponent(data.replace('bitcoin:?r=', '')); - $state.go('tabs.send.confirm', {paypro: data}) + $state.go('tabs.send'); + $timeout(function() { + $state.transitionTo('tabs.send.confirm', {paypro: data}); + }, 100); + return true; } @@ -41,44 +45,65 @@ angular.module('copayApp.services').factory('incomingData', function($log, $ioni var amount = parsed.amount ? parsed.amount : ''; - if (parsed.r) { - $state.go('tabs.send.confirm', {paypro: parsed.r}); - } else { - if (amount) { - $state.go('tabs.send.confirm', {toAmount: amount, toAddress: addr, description:message}) + $state.go('tabs.send'); + $timeout(function() { + if (parsed.r) { + $state.transitionTo('tabs.send.confirm', {paypro: parsed.r}); } else { - $state.go('tabs.send.amount', {toAddress: addr}) + if (amount) { + $state.transitionTo('tabs.send.confirm', {toAmount: amount, toAddress: addr, description:message}); + } else { + $state.transitionTo('tabs.send.amount', {toAddress: addr}); + } } - } + }, 100); return true; // Plain URL } else if (/^https?:\/\//.test(data)) { - return $state.go('tabs.send.confirm', {paypro: data}) + $state.go('tabs.send'); + $timeout(function() { + $state.transitionTo('tabs.send.confirm', {paypro: data}); + }, 100); + return true; // Plain Address } else if (bitcore.Address.isValid(data, 'livenet')) { - return $state.go('tabs.send.amount', {toAddress: data}) + $state.go('tabs.send'); + $timeout(function() { + $state.transitionTo('tabs.send.amount', {toAddress: data}); + }, 100); + return true; } else if (bitcore.Address.isValid(data, 'testnet')) { - return $state.go('tabs.send.amount', {toAddress: data}) - + $state.go('tabs.send'); + $timeout(function() { + $state.transitionTo('tabs.send.amount', {toAddress: data}); + }, 100); + return true; // Protocol } else if (data.indexOf($window.appConfig.name + '://glidera')==0) { - return $state.go('uriglidera', {url: data}) + return $state.go('uriglidera', {url: data}); } else if (data.indexOf($window.appConfig.name + '://coinbase')==0) { - return $state.go('uricoinbase', {url: data}) + return $state.go('uricoinbase', {url: data}); // Join } else if (data.match(/^copay:[0-9A-HJ-NP-Za-km-z]{70,80}$/)) { - return $state.go('tabs.add.join', {url: data}) + $state.go('tabs.home'); + $timeout(function() { + $state.transitionTo('tabs.add.join', {url: data}); + }, 100); + return true; // Old join } else if (data.match(/^[0-9A-HJ-NP-Za-km-z]{70,80}$/)) { - return $state.go('tabs.add.join', {url: data}) + $state.go('tabs.home'); + $timeout(function() { + $state.transitionTo('tabs.add.join', {url: data}); + }, 100); + return true; } - return false; };