Merge pull request #327 from msalcala11/slideToPayComponent
Implement Slide to Pay
This commit is contained in:
commit
8607867d71
30 changed files with 842 additions and 164 deletions
|
|
@ -1,9 +1,11 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, profileService, bitcore, gettext, txFormatService, ongoingProcess, $ionicModal, popupService) {
|
||||
angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, profileService, bitcore, gettext, txFormatService, ongoingProcess, $ionicModal, popupService, $ionicHistory, $ionicConfig) {
|
||||
var cachedTxp = {};
|
||||
var isChromeApp = platformInfo.isChromeApp;
|
||||
|
||||
$ionicConfig.views.swipeBackEnabled(false);
|
||||
|
||||
$scope.$on("$ionicView.beforeEnter", function(event, data) {
|
||||
$scope.isWallet = data.stateParams.isWallet;
|
||||
$scope.isCard = data.stateParams.isCard;
|
||||
|
|
@ -30,6 +32,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
throw ('bad params');
|
||||
}
|
||||
$scope.isCordova = platformInfo.isCordova;
|
||||
$scope.hasClick = platformInfo.hasClick;
|
||||
$scope.data = {};
|
||||
|
||||
var config = configService.getSync().wallet;
|
||||
|
|
@ -54,7 +57,8 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
}
|
||||
|
||||
var filteredWallets = [];
|
||||
var index = 0, enoughFunds = false;
|
||||
var index = 0;
|
||||
var enoughFunds = false;
|
||||
|
||||
lodash.each(wallets, function(w) {
|
||||
walletService.getStatus(w, {}, function(err, status) {
|
||||
|
|
@ -198,6 +202,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
};
|
||||
|
||||
var setSendError = function(msg) {
|
||||
$scope.sendStatus = '';
|
||||
popupService.showAlert(gettextCatalog.getString('Error at confirm:'), msg);
|
||||
};
|
||||
|
||||
|
|
@ -205,7 +210,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
$scope.fee = txFormatService.formatAmountStr(txp.fee);
|
||||
$scope.txp = txp;
|
||||
$scope.$apply();
|
||||
};
|
||||
}
|
||||
|
||||
var createTx = function(wallet, dryRun, cb) {
|
||||
var config = configService.getSync().wallet;
|
||||
|
|
@ -270,7 +275,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
});
|
||||
};
|
||||
|
||||
$scope.approve = function() {
|
||||
$scope.approve = function(onSendStatusChange) {
|
||||
var wallet = $scope.wallet;
|
||||
if (!wallet) {
|
||||
return setSendError(gettextCatalog.getString('No wallet selected'));
|
||||
|
|
@ -284,9 +289,10 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
if (err) return setSendError(err);
|
||||
});
|
||||
}
|
||||
ongoingProcess.set('creatingTx', true);
|
||||
|
||||
ongoingProcess.set('creatingTx', true, onSendStatusChange);
|
||||
createTx(wallet, false, function(err, txp) {
|
||||
ongoingProcess.set('creatingTx', false);
|
||||
ongoingProcess.set('creatingTx', false, onSendStatusChange);
|
||||
if (err) return;
|
||||
|
||||
var config = configService.getSync();
|
||||
|
|
@ -304,24 +310,57 @@ angular.module('copayApp.controllers').controller('confirmController', function(
|
|||
if (!spendingPassEnabled && !touchIdEnabled) {
|
||||
if (isCordova && bigAmount) {
|
||||
popupService.showConfirm(null, message, okText, cancelText, function(ok) {
|
||||
if (!ok) return;
|
||||
publishAndSign(wallet, txp);
|
||||
if (!ok) {
|
||||
$scope.sendStatus = '';
|
||||
$timeout(function() {
|
||||
$scope.$apply();
|
||||
});
|
||||
return;
|
||||
}
|
||||
publishAndSign(wallet, txp, onSendStatusChange);
|
||||
});
|
||||
}
|
||||
else {
|
||||
popupService.showConfirm(null, message, okText, cancelText, function(ok) {
|
||||
if (!ok) return;
|
||||
publishAndSign(wallet, txp);
|
||||
if (!ok) {
|
||||
$scope.sendStatus = '';
|
||||
return;
|
||||
}
|
||||
publishAndSign(wallet, txp, onSendStatusChange);
|
||||
});
|
||||
}
|
||||
}
|
||||
else publishAndSign(wallet, txp);
|
||||
else publishAndSign(wallet, txp, onSendStatusChange);
|
||||
});
|
||||
};
|
||||
|
||||
function publishAndSign(wallet, txp) {
|
||||
function statusChangeHandler(processName, showName, isOn) {
|
||||
$log.debug('statusChangeHandler: ', processName, showName, isOn);
|
||||
if ((processName === 'broadcastingTx' || ((processName === 'signingTx') && $scope.wallet.m > 1)) && !isOn) {
|
||||
$scope.sendStatus = 'success';
|
||||
$scope.$digest();
|
||||
} else if (showName) {
|
||||
$scope.sendStatus = showName;
|
||||
}
|
||||
}
|
||||
|
||||
$scope.statusChangeHandler = statusChangeHandler;
|
||||
|
||||
$scope.onConfirm = function() {
|
||||
$scope.approve(statusChangeHandler);
|
||||
};
|
||||
|
||||
$scope.onSuccessConfirm = function() {
|
||||
$ionicHistory.nextViewOptions({
|
||||
disableAnimate: true
|
||||
});
|
||||
$scope.sendStatus = '';
|
||||
$state.go('tabs.send');
|
||||
};
|
||||
|
||||
function publishAndSign(wallet, txp, onSendStatusChange) {
|
||||
walletService.publishAndSign(wallet, txp, function(err, txp) {
|
||||
if (err) return setSendError(err);
|
||||
});
|
||||
};
|
||||
}, onSendStatusChange);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,49 +1,11 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('txStatusController', function($scope, $timeout, $state, $stateParams, $ionicHistory, $log, addressbookService) {
|
||||
angular.module('copayApp.controllers').controller('txStatusController', function($scope, $timeout) {
|
||||
|
||||
if ($scope.cb) $timeout($scope.cb, 100);
|
||||
|
||||
var previousView = $ionicHistory.viewHistory().backView && $ionicHistory.viewHistory().backView.stateName;
|
||||
$scope.fromSendTab = previousView.match(/tabs.send/) ? true : false;
|
||||
$scope.fromBitPayCard = previousView.match(/tabs.bitpayCard/) ? true : false;
|
||||
$scope.fromPayPro = $stateParams.paypro ? true : false;
|
||||
|
||||
$scope.cancel = function() {
|
||||
$scope.txStatusModal.hide();
|
||||
if ($scope.fromSendTab) {
|
||||
$ionicHistory.removeBackView();
|
||||
$state.go('tabs.send');
|
||||
$timeout(function() {
|
||||
$state.transitionTo('tabs.home');
|
||||
}, 100);
|
||||
} else if ($scope.fromBitPayCard) {
|
||||
$ionicHistory.removeBackView();
|
||||
$timeout(function() {
|
||||
$state.transitionTo('tabs.bitpayCard');
|
||||
}, 100);
|
||||
}
|
||||
};
|
||||
|
||||
$scope.save = function(addressbookEntry) {
|
||||
$scope.txStatusModal.hide();
|
||||
$ionicHistory.nextViewOptions({
|
||||
disableAnimate: true,
|
||||
disableBack: true
|
||||
});
|
||||
$ionicHistory.removeBackView();
|
||||
$state.go('tabs.send.addressbook', {
|
||||
fromSendTab: $scope.fromSendTab,
|
||||
addressbookEntry: addressbookEntry
|
||||
});
|
||||
}
|
||||
|
||||
addressbookService.list(function(err, ab) {
|
||||
if (err) $log.error(err);
|
||||
if (ab[$scope.tx.toAddress]) {
|
||||
$scope.entryExist = true;
|
||||
$log.debug('Entry already exist');
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('txpDetailsController', function($scope, $rootScope, $timeout, $interval, $ionicModal, ongoingProcess, platformInfo, $ionicScrollDelegate, txFormatService, fingerprintService, bwcError, gettextCatalog, lodash, walletService, popupService) {
|
||||
angular.module('copayApp.controllers').controller('txpDetailsController', function($scope, $rootScope, $timeout, $interval, $ionicModal, $log, ongoingProcess, platformInfo, $ionicScrollDelegate, txFormatService, fingerprintService, bwcError, gettextCatalog, lodash, walletService, popupService, $state, $ionicHistory) {
|
||||
var self = $scope.self;
|
||||
var tx = $scope.tx;
|
||||
var copayers = $scope.copayers;
|
||||
|
|
@ -17,7 +17,7 @@ angular.module('copayApp.controllers').controller('txpDetailsController', functi
|
|||
$scope.canSign = $scope.wallet.canSign() || $scope.wallet.isPrivKeyExternal();
|
||||
$scope.color = $scope.wallet.color;
|
||||
$scope.data = {};
|
||||
|
||||
$scope.hasClick = platformInfo.hasClick;
|
||||
initActionList();
|
||||
checkPaypro();
|
||||
}
|
||||
|
|
@ -66,17 +66,18 @@ angular.module('copayApp.controllers').controller('txpDetailsController', functi
|
|||
}
|
||||
|
||||
var setSendError = function(msg) {
|
||||
$scope.sendStatus = '';
|
||||
var error = msg || gettextCatalog.getString('Could not send payment');
|
||||
popupService.showAlert(gettextCatalog.getString('Error'), error);
|
||||
}
|
||||
|
||||
$scope.sign = function() {
|
||||
$scope.sign = function(onSendStatusChange) {
|
||||
$scope.loading = true;
|
||||
walletService.publishAndSign($scope.wallet, $scope.tx, function(err, txp) {
|
||||
$scope.$emit('UpdateTx');
|
||||
if (err) return setSendError(err);
|
||||
$scope.close();
|
||||
});
|
||||
success();
|
||||
}, onSendStatusChange);
|
||||
};
|
||||
|
||||
function setError(err, prefix) {
|
||||
|
|
@ -213,6 +214,31 @@ angular.module('copayApp.controllers').controller('txpDetailsController', functi
|
|||
});
|
||||
};
|
||||
|
||||
function statusChangeHandler(processName, showName, isOn) {
|
||||
$log.debug('statusChangeHandler: ', processName, showName, isOn);
|
||||
if (showName) {
|
||||
$scope.sendStatus = showName;
|
||||
}
|
||||
}
|
||||
|
||||
function success() {
|
||||
$scope.sendStatus = 'success';
|
||||
$scope.$digest();
|
||||
}
|
||||
|
||||
$scope.statusChangeHandler = statusChangeHandler;
|
||||
|
||||
$scope.onConfirm = function() {
|
||||
$scope.sign(statusChangeHandler);
|
||||
};
|
||||
|
||||
$scope.onSuccessConfirm = function() {
|
||||
$ionicHistory.nextViewOptions({
|
||||
disableAnimate: true
|
||||
});
|
||||
$scope.close();
|
||||
};
|
||||
|
||||
$scope.close = function() {
|
||||
$scope.loading = null;
|
||||
$scope.txpDetailsModal.hide();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue