From f1f8f6e0f51026b0c8b624c9eca9f25ffd8d1f71 Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Mon, 6 Aug 2018 20:31:06 +1200 Subject: [PATCH 1/4] Tidied up third party data from BIP70 Payment Protocol. --- src/js/controllers/amount.js | 2 +- src/js/controllers/review.controller.js | 4 ++-- src/js/controllers/walletSelectorController.js | 16 +++++----------- src/js/routes.js | 2 +- src/js/services/incomingData.js | 15 +++++++++++++-- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index 576fb4500..db1bb52fe 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -470,7 +470,7 @@ function amountController(configService, $filter, gettextCatalog, $ionicHistory, amount: useSendMax ? undefined : satoshis, fromWalletId: passthroughParams.fromWalletId, sendMax: useSendMax, - toAddr: passthroughParams.toAddress, + toAddress: passthroughParams.toAddress, toWalletId: passthroughParams.toWalletId }; diff --git a/src/js/controllers/review.controller.js b/src/js/controllers/review.controller.js index 82ef2aa30..5c05ea6fa 100644 --- a/src/js/controllers/review.controller.js +++ b/src/js/controllers/review.controller.js @@ -67,7 +67,7 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit defaults = configService.getDefaults(); originWalletId = data.stateParams.fromWalletId; satoshis = parseInt(data.stateParams.amount, 10); - toAddress = data.stateParams.toAddr; + toAddress = data.stateParams.toAddress; vm.originWallet = profileService.getWallet(originWalletId); vm.origin.currency = vm.originWallet.coin.toUpperCase(); @@ -218,7 +218,7 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit amount: parseInt(data.stateParams.amount), sendMax: data.stateParams.sendMax === 'true' ? true : false, fromWalletId: data.stateParams.fromWalletId, - toAddress: data.stateParams.toAddr, + toAddress: data.stateParams.toAddress, feeLevel: configFeeLevel, spendUnconfirmed: config.wallet.spendUnconfirmed, diff --git a/src/js/controllers/walletSelectorController.js b/src/js/controllers/walletSelectorController.js index 1d52a715a..df733e11f 100644 --- a/src/js/controllers/walletSelectorController.js +++ b/src/js/controllers/walletSelectorController.js @@ -4,7 +4,6 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu var fromWalletId = ''; var priceDisplayAsFiat = false; - var requestedSatoshis = 0; var unitDecimals = 0; var unitsFromSatoshis = 0; @@ -39,8 +38,6 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu if ($scope.params.amount) { // There is an amount, so presume that it is a payment request $scope.sendFlowTitle = gettextCatalog.getString('Payment Request'); $scope.specificAmount = $scope.specificAlternativeAmount = ''; - //requestedAmountCrypto = (($state.params.amount) * (1 / config.unitToSatoshi)).toFixed(config.unitDecimals); - requestedSatoshis = $state.params.amount; $scope.isPaymentRequest = true; } if ($scope.params.thirdParty) { @@ -64,11 +61,11 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu }); function formatRequestedAmount() { - if (requestedSatoshis) { - var cryptoAmount = (unitsFromSatoshis * requestedSatoshis).toFixed(unitDecimals); + if ($scope.params.amount) { + var cryptoAmount = (unitsFromSatoshis * $scope.params.amount).toFixed(unitDecimals); var cryptoCoin = $scope.coin.toUpperCase(); - txFormatService.formatAlternativeStr($scope.coin, requestedSatoshis, function onFormatAlternativeStr(formatted){ + txFormatService.formatAlternativeStr($scope.coin, $scope.params.amount, function onFormatAlternativeStr(formatted){ if (formatted) { var fiatParts = formatted.split(' '); var fiatAmount = fiatParts[0]; @@ -107,12 +104,9 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu function handleThirdPartyIfBip70PaymentProtocol() { if ($scope.thirdParty.id === 'bip70PaymentProtocol') { - requestedSatoshis = $scope.thirdParty.details.amount; $scope.coin = $scope.thirdParty.coin; - $scope.requestAmount = unitsFromSatoshis * requestedSatoshis; - $scope.params.amount = requestedSatoshis; - $scope.params.toAddr = $scope.thirdParty.details.toAddress; - console.log('paypro details:', $scope.thirdParty.details); + $scope.requestAmount = unitsFromSatoshis * $scope.params.amount; + console.log('paypro details:', $scope.thirdParty); } } diff --git a/src/js/routes.js b/src/js/routes.js index 905683dcb..8a8adc964 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -345,7 +345,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } }) .state('tabs.send.review', { - url: '/review/:thirdParty/:amount/:fromWalletId/:sendMax/:toAddr/:toWalletId', + url: '/review/:thirdParty/:amount/:fromWalletId/:sendMax/:toAddress/:toWalletId', views: { 'tab-send@tabs': { controller: 'reviewController', diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index fa5abd56b..3b4b024c4 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -421,9 +421,20 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat function handlePayPro(payProDetails, coin) { var thirdPartyData = { - id: 'bip70PaymentProtocol', + caName: payProDetails.caName, + caTrusted: payProDetails.caTrusted, coin: coin, - details: payProDetails + domain: payProDetails.domain, + expires: payProDetails.expires, + id: 'bip70PaymentProtocol', + memo: payProDetails.memo, + merchant_data: payProDetails.merchant_data, + network: payProDetails.network, + requiredFeeRate: payProDetails.requiredFeeRate, + selfSigned: payProDetails.selfSigned, + time: payProDetails.time, + url: payProDetails.url, + verified: payProDetails.verified }; var stateParams = { amount: payProDetails.amount, From 731cfebc8a336e91e107570e2bbf031b68f22375 Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Mon, 6 Aug 2018 20:39:59 +1200 Subject: [PATCH 2/4] Fixed destination coin for Shapeshift. --- src/js/controllers/walletSelectorController.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/walletSelectorController.js b/src/js/controllers/walletSelectorController.js index df733e11f..e603032bd 100644 --- a/src/js/controllers/walletSelectorController.js +++ b/src/js/controllers/walletSelectorController.js @@ -168,8 +168,10 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu } } else if ($scope.type === 'destination') { - $scope.fromWallet = profileService.getWallet(fromWalletId); - $scope.coin = $scope.fromWallet.coin; // Only show wallets with the select origin wallet coin + if (!$scope.coin) { // Allow for the coin to be set by a third party + $scope.fromWallet = profileService.getWallet(fromWalletId); + $scope.coin = $scope.fromWallet.coin; // Only show wallets with the select origin wallet coin + } $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send to'); if ($scope.coin === 'btc') { // if no specific coin is set or coin is set btc From ec354bd340414dda1f7271dfe0492a2946cc7a6d Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Mon, 6 Aug 2018 11:25:29 +0200 Subject: [PATCH 3/4] header css --- src/js/controllers/review.controller.js | 4 ++++ src/js/services/shapeshiftService.js | 19 +++++++++++++------ src/sass/views/shapeshift.scss | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/js/controllers/review.controller.js b/src/js/controllers/review.controller.js index 5c05ea6fa..c2e6be3de 100644 --- a/src/js/controllers/review.controller.js +++ b/src/js/controllers/review.controller.js @@ -105,6 +105,10 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit } vm.approve = function() { + if (vm.thirdParty.id === 'shapeshift') { + shapeshiftService.shiftIt(); + return; + } if (!tx || !vm.originWallet) return; diff --git a/src/js/services/shapeshiftService.js b/src/js/services/shapeshiftService.js index 131df0cd0..317e72394 100644 --- a/src/js/services/shapeshiftService.js +++ b/src/js/services/shapeshiftService.js @@ -1,26 +1,32 @@ 'use strict'; -angular.module('copayApp.services').factory('shapeshiftService', function($http, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, platformInfo, servicesService) { +angular.module('copayApp.services').factory('shapeshiftService', function($http, $interval, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, incomingData, platformInfo, servicesService) { var root = {}; root.ShiftState = 'Shift'; root.withdrawalAddress = '' root.returnAddress = '' root.amount = ''; root.marketData = {} - this.withdrawalAddress = function(address) { + root.withdrawalAddress = function(address) { root.withdrawalAddress = address; }; - this.returnAddress = function(address) { + root.returnAddress = function(address) { root.returnAddress = address; }; - this.amount = function(amount) { + root.amount = function(amount) { root.amount = amount; }; - this.fromWalletId = function(id) { + root.fromWalletId = function(id) { root.fromWalletId = id; }; - this.toWalletId = function(id) { + root.toWalletId = function(id) { root.toWalletId = id; }; + root.coinIn = function(coinIn) { + root.coinIn = coinIn.toUpperCase(); + }; + root.coinOut = function(coinOut) { + root.coinOut = coinOut.toUpperCase(); + }; root.getMarketDataIn = function(coin) { if(coin === root.coinOut) return root.getMarketData(root.coinOut, root.coinIn); @@ -104,6 +110,7 @@ angular.module('copayApp.services').factory('shapeshiftService', function($http, var shapeshiftData = { fromWalletId: root.fromWalletId, + toWalletId: root.toWalletId, minAmount: root.marketData.minimum, maxAmount: root.marketData.maxLimit, orderId: root.depositInfo.orderId diff --git a/src/sass/views/shapeshift.scss b/src/sass/views/shapeshift.scss index ee4cd0b0f..5b63c0354 100644 --- a/src/sass/views/shapeshift.scss +++ b/src/sass/views/shapeshift.scss @@ -18,6 +18,6 @@ } } .header.shapeshift { - background: url(../img/shapeshiftbg.jpg) center center no-repeat #28394d; + background: url(../img/shapeshiftbg.jpg) center center repeat #28394d; opacity: 0.99; } \ No newline at end of file From cea77e910f2342a973f919a83278d72c8026b526 Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Mon, 6 Aug 2018 21:46:03 +1200 Subject: [PATCH 4/4] One step closer to getting send max working. --- src/js/controllers/review.controller.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/review.controller.js b/src/js/controllers/review.controller.js index 5c05ea6fa..4fcb447e2 100644 --- a/src/js/controllers/review.controller.js +++ b/src/js/controllers/review.controller.js @@ -594,7 +594,7 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit channel = "ga"; } // When displaying Fiat, if the formatting fails, the crypto will be the primary amount. - var amount = priceDisplayIsFiat ? vm.secondaryAmount || vm.primaryAmount : vm.primaryAmount; + var amount = unitFromSat * satoshis; var log = new window.BitAnalytics.LogEvent("transfer_success", [{ "coin": vm.originWallet.coin, "type": "outgoing", @@ -678,7 +678,8 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit tx.sendMaxInfo = sendMaxInfo; tx.amount = tx.sendMaxInfo.amount; - updateAmount(); + satoshis = tx.amount; + updateSendAmounts(); ongoingProcess.set('calculatingFee', false); $timeout(function() { showSendMaxWarning(wallet, sendMaxInfo);