From 71267a00c0bbb515884507bd5dbe081bedaca4b9 Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Wed, 27 Jun 2018 17:11:23 +0200 Subject: [PATCH 1/6] Generate new address outside copy-to-clipboard element --- www/views/tab-receive.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/www/views/tab-receive.html b/www/views/tab-receive.html index 3dd8ce94a..0a0149afe 100644 --- a/www/views/tab-receive.html +++ b/www/views/tab-receive.html @@ -46,11 +46,11 @@ {{addr}} -
-
-
+ +
+
From 8006af279b8ba65aee9908ec567c43c298c0955c Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Thu, 28 Jun 2018 10:52:06 +0200 Subject: [PATCH 2/6] clipboard service --- src/js/directives/copyToClipboard.js | 21 ++------------------- src/js/services/clipboardService.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 src/js/services/clipboardService.js diff --git a/src/js/directives/copyToClipboard.js b/src/js/directives/copyToClipboard.js index 5de40f23e..35802b598 100644 --- a/src/js/directives/copyToClipboard.js +++ b/src/js/directives/copyToClipboard.js @@ -1,38 +1,21 @@ 'use strict'; angular.module('copayApp.directives') - .directive('copyToClipboard', function(platformInfo, nodeWebkitService, gettextCatalog, ionicToast, clipboard) { + .directive('copyToClipboard', function(clipboardService) { return { restrict: 'A', scope: { copyToClipboard: '=copyToClipboard' }, link: function(scope, elem, attrs, ctrl) { - var isCordova = platformInfo.isCordova; - var isChromeApp = platformInfo.isChromeApp; - var isNW = platformInfo.isNW; elem.bind('mouseover', function() { elem.css('cursor', 'pointer'); }); - var msg = gettextCatalog.getString('Copied to clipboard'); elem.bind('click', function() { var data = scope.copyToClipboard; - if (!data) return; - if (isCordova) { - cordova.plugins.clipboard.copy(data); - } else if (isNW) { - nodeWebkitService.writeToClipboard(data); - } else if (clipboard.supported) { - clipboard.copyText(data); - } else { - // No supported - return; - } - scope.$apply(function() { - ionicToast.show(msg, 'bottom', false, 1000); - }); + clipboardService.copyToClipboard(data, scope); }); } } diff --git a/src/js/services/clipboardService.js b/src/js/services/clipboardService.js new file mode 100644 index 000000000..ab8110b0a --- /dev/null +++ b/src/js/services/clipboardService.js @@ -0,0 +1,28 @@ +'use strict'; + +angular.module('copayApp.services').factory('clipboardService', function ($http, $log, platformInfo, nodeWebkitService, gettextCatalog, ionicToast, clipboard) { + var root = {}; + + root.copyToClipboard = function (data, scope) { + var msg = gettextCatalog.getString('Copied to clipboard'); + + if (!data) return; + + if (platformInfo.isCordova) { + cordova.plugins.clipboard.copy(data); + } else if (platformInfo.isNW) { + nodeWebkitService.writeToClipboard(data); + } else if (clipboard.supported) { + clipboard.copyText(data); + } else { + // No supported + return; + } + + scope.$apply(function () { + ionicToast.show(msg, 'bottom', false, 1000); + }); + }; + + return root; +}); \ No newline at end of file From 243f35c25d1699554e209ca1db9f34003b662c25 Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Thu, 28 Jun 2018 14:16:33 +0200 Subject: [PATCH 3/6] copy to clipboard --- src/js/controllers/tab-receive.js | 3 ++- src/js/directives/copyToClipboard.js | 9 +++++++-- src/js/services/clipboardService.js | 5 ----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index e4f7388d6..a77870cb4 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('tabReceiveController', function($rootScope, $scope, $timeout, $log, $ionicModal, $state, $ionicHistory, $ionicPopover, storageService, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService, bwcError, bitcoinCashJsService, $ionicNavBarDelegate, txFormatService) { +angular.module('copayApp.controllers').controller('tabReceiveController', function($rootScope, $scope, $timeout, $log, $ionicModal, $state, $ionicHistory, $ionicPopover, storageService, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService, bwcError, bitcoinCashJsService, $ionicNavBarDelegate, txFormatService, clipboardService) { var listeners = []; $scope.bchAddressType = { type: 'cashaddr' }; @@ -73,6 +73,7 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi currentAddressSocket = new WebSocket("wss://ws.blockchain.info/inv"); paymentSubscriptionObj.addr = $scope.addr } + clipboardService.copyToClipboard(paymentSubscriptionObj.addr); // create subscription var msg = JSON.stringify(paymentSubscriptionObj); diff --git a/src/js/directives/copyToClipboard.js b/src/js/directives/copyToClipboard.js index 35802b598..c81e0bd60 100644 --- a/src/js/directives/copyToClipboard.js +++ b/src/js/directives/copyToClipboard.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.directives') - .directive('copyToClipboard', function(clipboardService) { + .directive('copyToClipboard', function(clipboardService, ionicToast, gettextCatalog) { return { restrict: 'A', scope: { @@ -14,8 +14,13 @@ angular.module('copayApp.directives') elem.bind('click', function() { var data = scope.copyToClipboard; + clipboardService.copyToClipboard(data); + + var msg = gettextCatalog.getString('Copied to clipboard'); + scope.$apply(function () { + ionicToast.show(msg, 'bottom', false, 1000); + }); - clipboardService.copyToClipboard(data, scope); }); } } diff --git a/src/js/services/clipboardService.js b/src/js/services/clipboardService.js index ab8110b0a..67de530af 100644 --- a/src/js/services/clipboardService.js +++ b/src/js/services/clipboardService.js @@ -4,8 +4,6 @@ angular.module('copayApp.services').factory('clipboardService', function ($http, var root = {}; root.copyToClipboard = function (data, scope) { - var msg = gettextCatalog.getString('Copied to clipboard'); - if (!data) return; if (platformInfo.isCordova) { @@ -19,9 +17,6 @@ angular.module('copayApp.services').factory('clipboardService', function ($http, return; } - scope.$apply(function () { - ionicToast.show(msg, 'bottom', false, 1000); - }); }; return root; From 40d0e5b896968b25eb471c2af1b9bf307f2b382c Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Fri, 29 Jun 2018 15:24:11 +0200 Subject: [PATCH 4/6] added protocol and use the new cashaddr instead of legacy --- src/js/controllers/tab-receive.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index a77870cb4..143fa9207 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -73,7 +73,8 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi currentAddressSocket = new WebSocket("wss://ws.blockchain.info/inv"); paymentSubscriptionObj.addr = $scope.addr } - clipboardService.copyToClipboard(paymentSubscriptionObj.addr); + + clipboardService.copyToClipboard($scope.protocolHandler + ":" + $scope.addr); // create subscription var msg = JSON.stringify(paymentSubscriptionObj); From c63bc06c76d67f1a7511a6476ee1a209e8dee26c Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Sun, 1 Jul 2018 23:35:06 +0200 Subject: [PATCH 5/6] try catch on copy-to-clipboard --- src/js/controllers/tab-receive.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 143fa9207..7236b80c5 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -74,8 +74,12 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi paymentSubscriptionObj.addr = $scope.addr } - clipboardService.copyToClipboard($scope.protocolHandler + ":" + $scope.addr); - + try { + clipboardService.copyToClipboard($scope.protocolHandler + ":" + $scope.addr); + } catch (error) { + $log.debug("Error copying to clipboard:"); + $log.debug(error); + } // create subscription var msg = JSON.stringify(paymentSubscriptionObj); currentAddressSocket.onopen = function (event) { From 6b20a01e2565ed593f6c73b8ee92db94157e16ba Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Mon, 2 Jul 2018 10:34:32 +0200 Subject: [PATCH 6/6] remove protocolHandler, only apply on bitcoincash: + support legacy&bitpay address types --- src/js/controllers/tab-receive.js | 2 +- src/js/services/clipboardService.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 7236b80c5..dedc00494 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -75,7 +75,7 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi } try { - clipboardService.copyToClipboard($scope.protocolHandler + ":" + $scope.addr); + clipboardService.copyToClipboard($scope.wallet.coin == 'bch' && $scope.bchAddressType.type == 'cashaddr' ? 'bitcoincash:' + $scope.addr : $scope.addr); } catch (error) { $log.debug("Error copying to clipboard:"); $log.debug(error); diff --git a/src/js/services/clipboardService.js b/src/js/services/clipboardService.js index 67de530af..e2e0e5fb3 100644 --- a/src/js/services/clipboardService.js +++ b/src/js/services/clipboardService.js @@ -3,9 +3,10 @@ angular.module('copayApp.services').factory('clipboardService', function ($http, $log, platformInfo, nodeWebkitService, gettextCatalog, ionicToast, clipboard) { var root = {}; - root.copyToClipboard = function (data, scope) { + root.copyToClipboard = function (data) { if (!data) return; + $log.debug("Copy '"+data+"' to clipboard"); if (platformInfo.isCordova) { cordova.plugins.clipboard.copy(data); } else if (platformInfo.isNW) {