diff --git a/src/js/controllers/sendFlowController.js b/src/js/controllers/sendFlowController.js new file mode 100644 index 000000000..ec29d7b50 --- /dev/null +++ b/src/js/controllers/sendFlowController.js @@ -0,0 +1,69 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('sendFlowController', function($scope, $rootScope, $state, $stateParams, $log, configService, gettextCatalog, profileService) { + + var unitToSatoshi; + var satToUnit; + var unitDecimals; + var satToBtc; + + $scope.$on("$ionicView.beforeEnter", function(event, data) { + var config = configService.getSync().wallet.settings; + + $scope.specificAmount = $scope.specificAlternativeAmount = ''; + unitToSatoshi = config.unitToSatoshi; + satToUnit = 1 / unitToSatoshi; + satToBtc = 1 / 100000000; + unitDecimals = config.unitDecimals; + + // in SAT ALWAYS + if ($stateParams.toAmount) { + $scope.requestAmount = (($stateParams.toAmount) * satToUnit).toFixed(unitDecimals); + $scope.isPaymentRequest = true; + } + + console.log(data, $stateParams); + + $scope.params = $stateParams; + }); + + $scope.$on("$ionicView.enter", function(event, data) { + console.log(data, $stateParams); + $scope.type = data.stateParams.fromWalletId ? 'destination' : 'origin'; // origin || destination + $scope.coin = false; // Wallets to show (for destination screen) + $scope.walletsEmpty = []; + // Show price-header + + if ($scope.type === 'origin') { + $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send from'); + $scope.walletsEmpty = profileService.getWallets({coin: $scope.coin, hasNoFunds: true}); + } else if ($scope.type === 'destination') { + + $scope.fromWallet = profileService.getWallet(data.stateParams.fromWalletId); + $scope.coin = $scope.fromWallet.coin; + + $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send to'); + } + + if (!$scope.coin || $scope.coin === 'bch') { + $scope.walletsBch = profileService.getWallets({coin: 'bch', hasFunds: $scope.type==='origin'}); + } + if (!$scope.coin || $scope.coin === 'btc') { + $scope.walletsBtc = profileService.getWallets({coin: 'btc', hasFunds: $scope.type === 'origin'}); + } + + configService.whenAvailable(function(config) { + $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay; + }); + }); + + $scope.useWallet = function(wallet) { + if ($scope.type === 'origin') { + $scope.params['fromWalletId'] = wallet.id; + $state.transitionTo('tabs.send.destination', $scope.params); + } else { + $scope.params['toWalletId'] = wallet.id; + $state.transitionTo('tabs.send.amount', $scope.params); + } + }; +}); \ No newline at end of file diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index 99265457d..8e0ae6b92 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -54,42 +54,42 @@ angular.module('copayApp.controllers').controller('tabSendController', function( updateList(); }); }); - - var wallets; - var walletsBch; - var walletsBtc; - var walletToWalletFrom = false; - - $scope.onWalletSelect = function(wallet) { - if (!$scope.walletToWalletFrom) { - $scope.walletToWalletFrom = wallet; - if (wallet.coin === 'bch') { - $scope.showWalletsBch = true; - } else if (wallet.coin === 'btc') { - $scope.showWalletsBtc = true; - } - $scope.walletSelectorTitleTo = gettextCatalog.getString('Send to'); - } else { - $ionicLoading.show(); - walletService.getAddress(wallet, true, function(err, addr) { - $ionicLoading.hide(); - return $state.transitionTo('tabs.send.amount', { - displayAddress: $scope.walletToWalletFrom.coin === 'bch' ? bitcoinCashJsService.translateAddresses(addr).cashaddr : addr, - recipientType: 'wallet', - fromWalletId: $scope.walletToWalletFrom.id, - toAddress: addr, - coin: $scope.walletToWalletFrom.coin - }); - }); - - } - }; - - $scope.showWalletSelector = function() { - $scope.walletToWalletFrom = false; - $scope.walletSelectorTitleFrom = gettextCatalog.getString('Send from'); - $scope.showWallets = true; - }; + // + // var wallets; + // var walletsBch; + // var walletsBtc; + // var walletToWalletFrom = false; + // + // $scope.onWalletSelect = function(wallet) { + // if (!$scope.walletToWalletFrom) { + // $scope.walletToWalletFrom = wallet; + // if (wallet.coin === 'bch') { + // $scope.showWalletsBch = true; + // } else if (wallet.coin === 'btc') { + // $scope.showWalletsBtc = true; + // } + // $scope.walletSelectorTitleTo = gettextCatalog.getString('Send to'); + // } else { + // $ionicLoading.show(); + // walletService.getAddress(wallet, true, function(err, addr) { + // $ionicLoading.hide(); + // return $state.transitionTo('tabs.send.amount', { + // displayAddress: $scope.walletToWalletFrom.coin === 'bch' ? bitcoinCashJsService.translateAddresses(addr).cashaddr : addr, + // recipientType: 'wallet', + // fromWalletId: $scope.walletToWalletFrom.id, + // toAddress: addr, + // coin: $scope.walletToWalletFrom.coin + // }); + // }); + // + // } + // }; + // + // $scope.showWalletSelector = function() { + // $scope.walletToWalletFrom = false; + // $scope.walletSelectorTitleFrom = gettextCatalog.getString('Send from'); + // $scope.showWallets = true; + // }; $scope.findContact = function(search) { @@ -133,7 +133,6 @@ angular.module('copayApp.controllers').controller('tabSendController', function( }; var updateHasFunds = function() { - $scope.hasFunds = false; var index = 0; lodash.each($scope.wallets, function(w) { diff --git a/src/js/controllers/walletToWalletController.js b/src/js/controllers/walletToWalletController.js deleted file mode 100644 index d83f93ddb..000000000 --- a/src/js/controllers/walletToWalletController.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('walletToWalletController', function($scope, $rootScope, $log, configService, gettextCatalog, profileService) { - - $scope.$on("$ionicView.enter", function(event, data) { - $scope.type = 'origin'; // origin || destination - $scope.coin = false; // Wallets to show (for destination screen) - $scope.walletsEmpty = []; - $scope.isPaymentRequest = true; // Show price-header - - if ($scope.type === 'origin') { - $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send from'); - $scope.walletsEmpty = profileService.getWallets({coin: $scope.coin, hasNoFunds: true}); - } else if ($scope.type === 'destination') { - $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send to'); - } - - if (!$scope.coin || $scope.coin === 'bch') { - $scope.walletsBch = profileService.getWallets({coin: 'bch', hasFunds: $scope.type==='origin'}); - } - if (!$scope.coin || $scope.coin === 'btc') { - $scope.walletsBtc = profileService.getWallets({coin: 'btc', hasFunds: $scope.type === 'origin'}); - } - - configService.whenAvailable(function(config) { - $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay; - }); - }); - - $scope.useWallet = function(wallet) { - // Do something with selected wallet - }; -}); \ No newline at end of file diff --git a/src/js/routes.js b/src/js/routes.js index 72397d872..29273d444 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -270,6 +270,24 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } } }) + .state('tabs.send.origin', { + url: '/origin/:thirdParty/:amount/:toAddress/:toWalletId', + views: { + 'tab-send@tabs': { + controller: 'sendFlowController', + templateUrl: 'views/wallet-origin-destination.html', + } + } + }) + .state('tabs.send.destination', { + url: '/destination/:fromWalletId/:thirdParty/:amount', + views: { + 'tab-send@tabs': { + controller: 'sendFlowController', + templateUrl: 'views/wallet-origin-destination.html', + } + } + }) .state('tabs.settings', { url: '/settings', views: { @@ -299,7 +317,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/wallet-to-wallet', views: { 'tab-send@tabs': { - controller: 'walletToWalletController', + controller: 'sendFlowController', templateUrl: 'views/wallet-to-wallet-transfer.html' } } @@ -1273,7 +1291,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr if (screen.width < 768 && platformInfo.isCordova) screen.lockOrientation('portrait'); - if (ionic.Platform.isAndroid() && StatusBar) { + if (ionic.Platform.isAndroid() && platformInfo.isCordova && StatusBar) { StatusBar.backgroundColorByHexString('#000000'); } diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index 1bb87b49c..fc3d37d47 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -83,7 +83,7 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat // Timeout is required to enable the "Back" button $timeout(function() { if (amount) { - $state.transitionTo('tabs.send.confirm', { + $state.transitionTo('tabs.send.origin', { toAmount: amount, toAddress: addr, displayAddress: originalAddress ? originalAddress : addr, @@ -102,8 +102,10 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat params['minShapeshiftAmount'] = shapeshiftData.minAmount; params['maxShapeshiftAmount'] = shapeshiftData.maxAmount; params['shapeshiftOrderId'] = shapeshiftData.orderId; + $state.transitionTo('tabs.send.amount', params); + } else { + $state.transitionTo('tabs.send.origin', params); } - $state.transitionTo('tabs.send.amount', params); } }, 100); } diff --git a/src/sass/views/views.scss b/src/sass/views/views.scss index 538787901..e1a122dbb 100644 --- a/src/sass/views/views.scss +++ b/src/sass/views/views.scss @@ -8,7 +8,7 @@ @import "tab-receive"; @import "tab-scan"; @import "tab-send"; -@import "wallet-to-wallet-transfer"; +@import "wallet-origin-destination"; @import "tab-settings"; @import "wallet-colors"; @import "walletBalance"; diff --git a/src/sass/views/wallet-to-wallet-transfer.scss b/src/sass/views/wallet-origin-destination.scss similarity index 97% rename from src/sass/views/wallet-to-wallet-transfer.scss rename to src/sass/views/wallet-origin-destination.scss index 7328a2891..94fbe8e4b 100644 --- a/src/sass/views/wallet-to-wallet-transfer.scss +++ b/src/sass/views/wallet-origin-destination.scss @@ -1,4 +1,4 @@ -#wallet-to-wallet-transfer { +#wallet-origin-destination { .header--request { padding: 30px 24px; width: 100%; diff --git a/www/views/tab-send.html b/www/views/tab-send.html index b5d556214..a1e8a778f 100644 --- a/www/views/tab-send.html +++ b/www/views/tab-send.html @@ -105,31 +105,31 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/views/wallet-to-wallet-transfer.html b/www/views/wallet-origin-destination.html similarity index 96% rename from www/views/wallet-to-wallet-transfer.html rename to www/views/wallet-origin-destination.html index 2055e4845..66f5852ad 100644 --- a/www/views/wallet-to-wallet-transfer.html +++ b/www/views/wallet-origin-destination.html @@ -1,4 +1,4 @@ - + {{'Wallet to wallet transfer' | translate}} @@ -6,7 +6,7 @@
Paying
$37.42 USD
-
0.04580000 BCH
+
0.04580000 BCH {{requestAmount}}