From 473feddfc8e0492b1e213ac4f08438cc7bdb6378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Tue, 20 Sep 2016 15:28:31 -0300 Subject: [PATCH] use accept slider directive --- public/views/confirm.html | 10 +- public/views/includes/acceptSlide.html | 7 ++ public/views/modals/txp-details.html | 10 +- src/js/controllers/confirm.js | 153 +++++++++++++----------- src/js/controllers/modals/txpDetails.js | 23 +--- src/js/directives/directives.js | 16 +++ src/sass/views/confirm.scss | 7 ++ 7 files changed, 118 insertions(+), 108 deletions(-) create mode 100644 public/views/includes/acceptSlide.html diff --git a/public/views/confirm.html b/public/views/confirm.html index 8cf5f6196..3f011988d 100644 --- a/public/views/confirm.html +++ b/public/views/confirm.html @@ -1,11 +1,11 @@ - + - +
@@ -49,9 +49,7 @@
- -
+ +
diff --git a/public/views/includes/acceptSlide.html b/public/views/includes/acceptSlide.html new file mode 100644 index 000000000..e0afe811f --- /dev/null +++ b/public/views/includes/acceptSlide.html @@ -0,0 +1,7 @@ + + + + +

Slide to accept

+
+
diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 00f0b89fb..790d09156 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -161,13 +161,5 @@ -
- - - - -

Slide to accept

-
-
-
+ diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index 80a333a67..1812f1e17 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -1,10 +1,86 @@ '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, $ionicHistory, popupService) { +angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $ionicSlideBoxDelegate, $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; + $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') + throw ('bad params'); + } + $scope.isCordova = platformInfo.isCordova; + $scope.hideSlider = false; + $scope.data = {}; + + var config = configService.getSync().wallet; + $scope.feeLevel = config.settings ? config.settings.feeLevel : ''; + + var amount = $scope.toAmount = parseInt($stateParams.toAmount); + $scope.amountStr = txFormatService.formatAmountStr($scope.toAmount); + + $scope.toAddress = $stateParams.toAddress; + $scope.toName = $stateParams.toName; + $scope.toEmail = $stateParams.toEmail; + $scope.description = $stateParams.description; + $scope.paypro = $stateParams.paypro; + + var networkName = (new bitcore.Address($scope.toAddress)).network.name; + $scope.network = networkName; + + $scope.notAvailable = false; + var wallets = profileService.getWallets({ + onlyComplete: true, + network: networkName, + }); + + var filteredWallets = []; + var index = 0; + + lodash.each(wallets, function(w) { + walletService.getStatus(w, {}, function(err, status) { + if (err || !status) { + $log.error(err); + } else { + if (!status.availableBalanceSat) $log.debug('No balance available in: ' + w.name); + if (status.availableBalanceSat > amount) filteredWallets.push(w); + } + + if (++index == wallets.length) { + if (!lodash.isEmpty(filteredWallets)) { + $scope.wallets = lodash.clone(filteredWallets); + $scope.notAvailable = false; + } else { + $scope.notAvailable = true; + $log.warn('No wallet available to make the payment'); + } + + $timeout(function() { + $scope.$apply(); + }); + return; + } + }); + }); + + txFormatService.formatAlternativeStr(amount, function(v) { + $scope.alternativeAmountStr = v; + }); + }; + + $scope.$on('accepted', function(event) { + $scope.hideSlider = true; + $scope.approve(); + }); $scope.$on('Wallet/Changed', function(event, wallet) { if (lodash.isEmpty(wallet)) { @@ -76,76 +152,6 @@ 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') - throw ('bad params'); - } - $scope.isCordova = platformInfo.isCordova; - - var config = configService.getSync().wallet; - $scope.feeLevel = config.settings ? config.settings.feeLevel : ''; - - var amount = $scope.toAmount = parseInt($stateParams.toAmount); - $scope.amountStr = txFormatService.formatAmountStr($scope.toAmount); - - $scope.toAddress = $stateParams.toAddress; - $scope.toName = $stateParams.toName; - $scope.toEmail = $stateParams.toEmail; - $scope.description = $stateParams.description; - $scope.paypro = $stateParams.paypro; - - var networkName = (new bitcore.Address($scope.toAddress)).network.name; - $scope.network = networkName; - - $scope.notAvailable = false; - var wallets = profileService.getWallets({ - onlyComplete: true, - network: networkName, - }); - - var filteredWallets = []; - var index = 0; - - lodash.each(wallets, function(w) { - walletService.getStatus(w, {}, function(err, status) { - if (err || !status) { - $log.error(err); - } else { - if (!status.availableBalanceSat) $log.debug('No balance available in: ' + w.name); - if (status.availableBalanceSat > amount) filteredWallets.push(w); - } - - if (++index == wallets.length) { - if (!lodash.isEmpty(filteredWallets)) { - $scope.wallets = lodash.clone(filteredWallets); - $scope.notAvailable = false; - } else { - $scope.notAvailable = true; - $log.warn('No wallet available to make the payment'); - } - - $timeout(function() { - $scope.$apply(); - }); - return; - } - }); - }); - - txFormatService.formatAlternativeStr(amount, function(v) { - $scope.alternativeAmountStr = v; - }); - }; - function setWallet(wallet, delayed) { var stop; $scope.wallet = wallet; @@ -258,7 +264,8 @@ angular.module('copayApp.controllers').controller('confirmController', function( return walletService.onlyPublish(wallet, txp, function(err, txp) { if (err) return setSendError(err); - $state.transitionTo('tabs.home'); + $ionicHistory.clearHistory(); + $state.go('tabs.home'); }); } @@ -275,6 +282,6 @@ angular.module('copayApp.controllers').controller('confirmController', function( }; $scope.cancel = function() { - $state.transitionTo('tabs.send'); + $state.go('tabs.send'); }; }); diff --git a/src/js/controllers/modals/txpDetails.js b/src/js/controllers/modals/txpDetails.js index 3311fac4f..fbc821908 100644 --- a/src/js/controllers/modals/txpDetails.js +++ b/src/js/controllers/modals/txpDetails.js @@ -49,28 +49,11 @@ angular.module('copayApp.controllers').controller('txpDetailsController', functi }); }; - $scope.options = { - loop: false, - effect: 'flip', - speed: 500, - pagination: false, - initialSlide: 1 - } - - $scope.$on("$ionicSlides.sliderInitialized", function(event, data) { - $scope.slider = data.slider; + $scope.$on('accepted', function(event) { + $scope.hideSlider = true; + $scope.sign(); }); - $scope.$on("$ionicSlides.slideChangeStart", function(event, data) { - $scope.data.index = data.slider.activeIndex; - if ($scope.data.index == 0) { - $scope.hideSlider = true; - $scope.sign(); - } - }); - - $scope.$on("$ionicSlides.slideChangeEnd", function(event, data) {}); - checkPaypro(); // ToDo: use tx.customData instead of tx.message diff --git a/src/js/directives/directives.js b/src/js/directives/directives.js index ecf849b10..06d620691 100644 --- a/src/js/directives/directives.js +++ b/src/js/directives/directives.js @@ -162,4 +162,20 @@ angular.module('copayApp.directives') }); } } + }) + .directive('accept', function($log, profileService, walletService, lodash) { + return { + restrict: 'E', + templateUrl: 'views/includes/acceptSlide.html', + scope: {}, + link: function(scope, element, attrs) { + scope.$on("$ionicSlides.sliderInitialized", function(event, data) { + scope.slider = data.slider; + }); + + scope.$on("$ionicSlides.slideChangeEnd", function(event, data) { + if (data.slider.activeIndex == 0) scope.$emit('accepted'); + }); + } + } }); diff --git a/src/sass/views/confirm.scss b/src/sass/views/confirm.scss index 396588118..e4c1b97aa 100644 --- a/src/sass/views/confirm.scss +++ b/src/sass/views/confirm.scss @@ -4,4 +4,11 @@ position: absolute; top: 10px; } + .accept-slide { + position: fixed; + bottom: 0; + width: 100%; + height: 100px; + background-color: #f5f5f5; + } }