From 7e56445330f8a32fb86719d39eab78af0a8deaea Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 09:59:41 -0300 Subject: [PATCH 01/17] Restores previous size of QR code --- public/views/walletHome.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/views/walletHome.html b/public/views/walletHome.html index 18af971ed..bee224a42 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -324,10 +324,10 @@

My Bitcoin address

- -
-
-
+ +
+
+
From 11a679bd98429c947c4138efdc4f6f691abe629b Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 10:06:15 -0300 Subject: [PATCH 02/17] New release v1.7.1 --- cordova/config.xml | 2 +- cordova/ios/Copay-Info.plist | 4 ++-- cordova/wp/Package.appxmanifest | 2 +- cordova/wp/Properties/WMAppManifest.xml | 2 +- package.json | 2 +- webkitbuilds/.desktop | 2 +- webkitbuilds/setup-win.iss | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cordova/config.xml b/cordova/config.xml index 5e89a1ee9..efe6a273d 100644 --- a/cordova/config.xml +++ b/cordova/config.xml @@ -2,7 +2,7 @@ + ios-CFBundleVersion="1.7.2"> Copay A secure bitcoin wallet for friends and companies. diff --git a/cordova/ios/Copay-Info.plist b/cordova/ios/Copay-Info.plist index 7b01cd8f2..6f53a5723 100644 --- a/cordova/ios/Copay-Info.plist +++ b/cordova/ios/Copay-Info.plist @@ -57,11 +57,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.7.1 + 1.7.2 CFBundleSignature ???? CFBundleVersion - 1.7.1 + 1.7.2 LSRequiresIPhoneOS NSMainNibFile diff --git a/cordova/wp/Package.appxmanifest b/cordova/wp/Package.appxmanifest index 88a522150..dccb5be45 100644 --- a/cordova/wp/Package.appxmanifest +++ b/cordova/wp/Package.appxmanifest @@ -1,6 +1,6 @@  - + Copay Bitcoin Wallet diff --git a/cordova/wp/Properties/WMAppManifest.xml b/cordova/wp/Properties/WMAppManifest.xml index 93b29b475..f24055486 100644 --- a/cordova/wp/Properties/WMAppManifest.xml +++ b/cordova/wp/Properties/WMAppManifest.xml @@ -9,7 +9,7 @@ - + Assets\icon@2.png diff --git a/package.json b/package.json index 82906f9fa..72a8549e7 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "copay", "description": "A multisignature wallet", "author": "BitPay", - "version": "1.7.1", + "version": "1.7.2", "keywords": [ "wallet", "copay", diff --git a/webkitbuilds/.desktop b/webkitbuilds/.desktop index c9b59610a..91a53b6d1 100644 --- a/webkitbuilds/.desktop +++ b/webkitbuilds/.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application -Version=1.7.1 +Version=1.7.2 Name=Copay Comment=A multisignature wallet Exec=copay diff --git a/webkitbuilds/setup-win.iss b/webkitbuilds/setup-win.iss index dff677608..fdf0a34d1 100755 --- a/webkitbuilds/setup-win.iss +++ b/webkitbuilds/setup-win.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Copay" -#define MyAppVersion "1.7.1" +#define MyAppVersion "1.7.2" #define MyAppPublisher "BitPay" #define MyAppURL "https://copay.io" #define MyAppExeName "Copay.exe" From 5300814681af1316eda471667e1b132fc027ef17 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 10:19:49 -0300 Subject: [PATCH 03/17] Updates new version --- cordova/config.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cordova/config.xml b/cordova/config.xml index efe6a273d..dedcdcc57 100644 --- a/cordova/config.xml +++ b/cordova/config.xml @@ -1,7 +1,7 @@ Copay From 0595fa07afe92d808a06b095293ecc74f36b04cb Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 10:38:24 -0300 Subject: [PATCH 04/17] Hide share address while generating new address --- public/views/walletHome.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/views/walletHome.html b/public/views/walletHome.html index bee224a42..eba6ccf03 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -364,7 +364,7 @@ Request a specific amount
-
+
Share address From 0fbf1a05063db0403d6ba7b55b1bf4e3503d6a8f Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 20 Jan 2016 10:49:34 -0300 Subject: [PATCH 05/17] display error is touch id failed --- src/js/controllers/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 17a43609e..5cf078261 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -1472,7 +1472,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r }, function(msg) { // ERROR - return cb(gettext('Invalid Touch ID')); + return cb(gettext('Error with Touch ID:') + msg); } ); }); From a319a5e011acd16a732e30740090fc29fc5342b8 Mon Sep 17 00:00:00 2001 From: bechi Date: Wed, 20 Jan 2016 11:15:44 -0300 Subject: [PATCH 06/17] fix ui bugs on txp details --- public/views/modals/txp-details.html | 2 +- src/css/mobile.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 91a91cb5d..162f1c258 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -23,7 +23,7 @@ - + Multiple recipients diff --git a/src/css/mobile.css b/src/css/mobile.css index 468f7787a..cd9c9dd94 100644 --- a/src/css/mobile.css +++ b/src/css/mobile.css @@ -784,12 +784,12 @@ textarea:focus } .payment-proposal-to i { - margin-right: 10px; + position: absolute; + left: 25px; padding-right: 10px; border-right: 1px solid; border-color: rgba(255, 255, 255, 0.1); font-size: 20px; - vertical-align: middle; } ::-webkit-input-placeholder { From 4ab36478fe44ed53988f0e634c9b7d21d63dc29d Mon Sep 17 00:00:00 2001 From: bechi Date: Wed, 20 Jan 2016 15:29:43 -0300 Subject: [PATCH 07/17] fix padding bugs --- public/views/backup.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/views/backup.html b/public/views/backup.html index 08efd6c1c..f4923e355 100644 --- a/public/views/backup.html +++ b/public/views/backup.html @@ -32,7 +32,7 @@
Write your wallet seed
-
+
To restore this {{index.m}}-{{index.n}} shared wallet you will need : @@ -43,7 +43,7 @@
-
+
To restore this {{index.m}}-{{index.n}} shared wallet you will need : From 8e65298ff9cfd7831cc9768d9bb29339034408c0 Mon Sep 17 00:00:00 2001 From: bechi Date: Wed, 20 Jan 2016 15:59:05 -0300 Subject: [PATCH 08/17] add row --- public/views/backup.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/views/backup.html b/public/views/backup.html index f4923e355..3d129432d 100644 --- a/public/views/backup.html +++ b/public/views/backup.html @@ -30,7 +30,7 @@ -->
-
+
Write your wallet seed
From 0a5c32b9f335e43480a9518ff6cd291cd456bd04 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 15:25:54 -0300 Subject: [PATCH 09/17] Touchid before Unlock on iOS --- public/views/modals/txp-details.html | 6 +- src/js/controllers/index.js | 3 + src/js/controllers/walletHome.js | 186 +++++++++++++-------------- src/js/services/profileService.js | 1 + 4 files changed, 99 insertions(+), 97 deletions(-) diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 162f1c258..fdd9cf4a1 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -170,12 +170,12 @@
-
-
+
+
* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created.
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 5cf078261..657ee5927 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -1485,6 +1485,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r return cb(err, pass); }, }; + $timeout(function() { + $rootScope.$apply(); + }); }); lodash.each(['NewCopayer', 'CopayerUpdated'], function(eventName) { diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index a9b977348..8d63f80f4 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -335,69 +335,70 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi $scope.sign = function(txp) { var fc = profileService.focusedClient; + $scope.error = null; if (!fc.canSign() && !fc.isPrivKeyExternal()) return; - if (fc.isPrivKeyEncrypted()) { - profileService.unlockFC(function(err) { - if (err) { - $scope.error = bwsError.msg(err); - return; - } - return $scope.sign(txp); - }); - return; - }; - - self._setOngoingForSigning(); $scope.loading = true; - $scope.error = null; $timeout(function() { + requestTouchid(function(err) { if (err) { - self.setOngoingProcess(); $scope.loading = false; - profileService.lockFC(); $scope.error = err; - $scope.$digest(); + $timeout(function() { + $scope.$digest(); + }); return; } - profileService.signTxProposal(txp, function(err, txpsi) { - self.setOngoingProcess(); + profileService.unlockFC(function(err) { if (err) { - $scope.$emit('UpdateTx'); $scope.loading = false; - $scope.error = bwsError.msg(err, gettextCatalog.getString('Could not accept payment')); - $scope.$digest(); - } else { - //if txp has required signatures then broadcast it - var txpHasRequiredSignatures = txpsi.status == 'accepted'; - if (txpHasRequiredSignatures) { - self.setOngoingProcess(gettextCatalog.getString('Broadcasting transaction')); - $scope.loading = true; - fc.broadcastTxProposal(txpsi, function(err, txpsb, memo) { - self.setOngoingProcess(); - $scope.loading = false; - if (err) { - $scope.$emit('UpdateTx'); - $scope.error = bwsError.msg(err, gettextCatalog.getString('Could not broadcast payment')); - $scope.$digest(); - } else { - $log.debug('Transaction signed and broadcasted') - if (memo) - $log.info(memo); - - refreshUntilItChanges = true; - $modalInstance.close(txpsb); - } - }); - } else { - $scope.loading = false; - $modalInstance.close(txpsi); - } + $scope.error = bwsError.msg(err); + $timeout(function() { + $scope.$digest(); + }); + return; } + + self._setOngoingForSigning(); + profileService.signTxProposal(txp, function(err, txpsi) { + self.setOngoingProcess(); + if (err) { + $scope.$emit('UpdateTx'); + $scope.loading = false; + $scope.error = bwsError.msg(err, gettextCatalog.getString('Could not accept payment')); + $scope.$digest(); + } else { + //if txp has required signatures then broadcast it + var txpHasRequiredSignatures = txpsi.status == 'accepted'; + if (txpHasRequiredSignatures) { + self.setOngoingProcess(gettextCatalog.getString('Broadcasting transaction')); + $scope.loading = true; + fc.broadcastTxProposal(txpsi, function(err, txpsb, memo) { + self.setOngoingProcess(); + $scope.loading = false; + if (err) { + $scope.$emit('UpdateTx'); + $scope.error = bwsError.msg(err, gettextCatalog.getString('Could not broadcast payment')); + $scope.$digest(); + } else { + $log.debug('Transaction signed and broadcasted') + if (memo) + $log.info(memo); + + refreshUntilItChanges = true; + $modalInstance.close(txpsb); + } + }); + } else { + $scope.loading = false; + $modalInstance.close(txpsi); + } + } + }); }); }); }, 100); @@ -833,6 +834,8 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi var currentSpendUnconfirmed = configWallet.spendUnconfirmed; var currentFeeLevel = walletSettings.feeLevel || 'normal'; + this.resetError(); + if (isCordova && this.isWindowsPhoneApp) { this.hideAddress = false; this.hideAmount = false; @@ -842,15 +845,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi if (form.$invalid) { this.error = gettext('Unable to send transaction proposal'); return; - } - - if (fc.isPrivKeyEncrypted()) { - profileService.unlockFC(function(err) { - if (err) return self.setSendError(err); - return self.submitForm(); - }); - return; - }; + } var comment = form.comment.$modelValue; @@ -869,7 +864,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi } }; - self.setOngoingProcess(gettextCatalog.getString('Creating transaction')); $timeout(function() { var paypro = self._paypro; var address, amount; @@ -879,8 +873,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi requestTouchid(function(err) { if (err) { - profileService.lockFC(); - self.setOngoingProcess(); self.error = err; $timeout(function() { $scope.$digest(); @@ -888,42 +880,48 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi return; } - getFee(function(err, feePerKb) { - if (err) $log.debug(err); - fc.sendTxProposal({ - toAddress: address, - amount: amount, - message: comment, - payProUrl: paypro ? paypro.url : null, - feePerKb: feePerKb, - excludeUnconfirmedUtxos: currentSpendUnconfirmed ? false : true - }, function(err, txp) { - if (err) { - self.setOngoingProcess(); - profileService.lockFC(); - return self.setSendError(err); - } - - if (!fc.canSign() && !fc.isPrivKeyExternal()) { - $log.info('No signing proposal: No private key') - self.setOngoingProcess(); - self.resetForm(); - txStatus.notify(txp, function() { - return $scope.$emit('Local/TxProposalAction'); - }); - return; - } - - self.signAndBroadcast(txp, function(err) { - self.setOngoingProcess(); - self.resetForm(); + profileService.unlockFC(function(err) { + if (err) { + return self.setSendError(err); + } + + self.setOngoingProcess(gettextCatalog.getString('Creating transaction')); + getFee(function(err, feePerKb) { + if (err) $log.debug(err); + fc.sendTxProposal({ + toAddress: address, + amount: amount, + message: comment, + payProUrl: paypro ? paypro.url : null, + feePerKb: feePerKb, + excludeUnconfirmedUtxos: currentSpendUnconfirmed ? false : true + }, function(err, txp) { if (err) { - self.error = err.message ? err.message : gettext('The payment was created but could not be completed. Please try again from home screen'); - $scope.$emit('Local/TxProposalAction'); - $timeout(function() { - $scope.$digest(); - }, 1); - } else go.walletHome(); + self.setOngoingProcess(); + return self.setSendError(err); + } + + if (!fc.canSign() && !fc.isPrivKeyExternal()) { + $log.info('No signing proposal: No private key') + self.setOngoingProcess(); + self.resetForm(); + txStatus.notify(txp, function() { + return $scope.$emit('Local/TxProposalAction'); + }); + return; + } + + self.signAndBroadcast(txp, function(err) { + self.setOngoingProcess(); + self.resetForm(); + if (err) { + self.error = err.message ? err.message : gettext('The payment was created but could not be completed. Please try again from home screen'); + $scope.$emit('Local/TxProposalAction'); + $timeout(function() { + $scope.$digest(); + }, 1); + } else go.walletHome(); + }); }); }); }); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 952882480..52e42ce57 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -630,6 +630,7 @@ angular.module('copayApp.services') root.unlockFC = function(cb) { var fc = root.focusedClient; + if (!fc.isPrivKeyEncrypted()) return cb(); $log.debug('Wallet is encrypted'); $rootScope.$emit('Local/NeedsPassword', false, function(err2, password) { if (err2 || !password) { From 50497c8e52f32f81716d35c224559fa17c70bfe8 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 20 Jan 2016 16:59:23 -0300 Subject: [PATCH 10/17] Wait for locking wallet automatically --- src/js/services/profileService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 52e42ce57..cdcb4126c 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -651,7 +651,7 @@ angular.module('copayApp.services') $log.debug('Locking wallet automatically'); root.lockFC(); }; - }, 2000); + }, 60000); return cb(); }); }; From 6d35fe12391371b0daf4314c997fbddacbb107d7 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Thu, 21 Jan 2016 09:55:28 -0300 Subject: [PATCH 11/17] hide "reject" button in 1-1 + autolock unlocked encrypted wallets on startup --- public/views/modals/txp-details.html | 2 +- src/js/services/profileService.js | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index fdd9cf4a1..017491ea5 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -42,7 +42,7 @@
-
+