diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index 4202b8e01..8901f1a8d 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicScrollDelegate, $ionicHistory, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService, ongoingProcess, popupService, bwcError, payproService, profileService, bitcore, amazonService) { +angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicScrollDelegate, $ionicHistory, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService, ongoingProcess, popupService, bwcError, payproService, profileService, bitcore, amazonService, nodeWebkitService) { var _cardId; var unitToSatoshi; var satToUnit; @@ -8,6 +8,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ var satToBtc; var SMALL_FONT_SIZE_LIMIT = 10; var LENGTH_EXPRESSION_LIMIT = 19; + var isNW = platformInfo.isNW; $scope.isChromeApp = platformInfo.isChromeApp; $scope.$on('$ionicView.leave', function() { @@ -15,7 +16,6 @@ angular.module('copayApp.controllers').controller('amountController', function($ }); $scope.$on("$ionicView.beforeEnter", function(event, data) { - // Go to... _cardId = data.stateParams.id; // Optional (BitPay Card ID) $scope.nextStep = data.stateParams.nextStep; @@ -42,18 +42,20 @@ angular.module('copayApp.controllers').controller('amountController', function($ var reOp = /^[\*\+\-\/]$/; var disableKeys = angular.element($window).on('keydown', function(e) { + if (!e.key) return; if (e.which === 8) { // you can add others here inside brackets. e.preventDefault(); $scope.removeDigit(); } - if (e.key && e.key.match(reNr)) + if (e.key.match(reNr)) { $scope.pushDigit(e.key); - - else if (e.key && e.key.match(reOp)) + } else if (e.key.match(reOp)) { $scope.pushOperator(e.key); - - else if (e.key && e.key == 'Enter') + } else if (e.keyCode === 86) { + if (e.ctrlKey || e.metaKey) + processClipboard(); + } else if (e.keyCode === 13) $scope.finish(); $timeout(function() { @@ -89,6 +91,20 @@ angular.module('copayApp.controllers').controller('amountController', function($ }, 10); }); + function paste(value) { + $scope.amount = value; + processAmount(value); + $timeout(function() { + $scope.$apply(); + }); + }; + + function processClipboard() { + if (!isNW) return; + var value = nodeWebkitService.readFromClipboard(); + if (value && evaluate(value) > 0) paste(evaluate(value)); + }; + $scope.showSendMaxMenu = function() { $scope.showSendMax = true; };