diff --git a/public/views/confirm.html b/public/views/confirm.html
index 8cf5f6196..f8998594b 100644
--- a/public/views/confirm.html
+++ b/public/views/confirm.html
@@ -1,11 +1,11 @@
-
+
-
+
-
-
+
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..e3d9da154 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..1e65bf1b5 100644
--- a/src/js/controllers/confirm.js
+++ b/src/js/controllers/confirm.js
@@ -5,6 +5,82 @@ angular.module('copayApp.controllers').controller('confirmController', function(
var cachedTxp = {};
var isChromeApp = platformInfo.isChromeApp;
+ $scope.init = function() {
+ if ($stateParams.paypro) {
+ return setFromPayPro($stateParams.paypro, function(err) {
+ if (err && !isChromeApp) {
+ popupService.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..7a790c5d6 100644
--- a/src/js/directives/directives.js
+++ b/src/js/directives/directives.js
@@ -162,4 +162,20 @@ angular.module('copayApp.directives')
});
}
}
+ })
+ .directive('accept', function() {
+ 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..556301f5d 100644
--- a/src/sass/views/confirm.scss
+++ b/src/sass/views/confirm.scss
@@ -1,7 +1,17 @@
#view-confirm {
+ ion-content{
+ bottom: 149px;
+ }
.send-gravatar {
left: 11px;
position: absolute;
top: 10px;
}
+ .accept-slide {
+ position: fixed;
+ bottom: 49px;
+ width: 100%;
+ height: 100px;
+ background-color: #f5f5f5;
+ }
}