diff --git a/public/views/buyGlidera.html b/public/views/buyGlidera.html index cffc679b5..1de232c47 100644 --- a/public/views/buyGlidera.html +++ b/public/views/buyGlidera.html @@ -1,7 +1,7 @@
+ ng-init="titleSection='Buy'; goBackToState = 'glidera'">
@@ -16,7 +16,7 @@
- Sending request to Glidera... + {{buy.loading|translate}} @@ -25,7 +25,7 @@
- +
+ type="submit" value="{{'Continue'|translate}}" ng-disabled="!buy.buyPrice.qty || buy.loading">
@@ -62,10 +62,10 @@

- + + type="submit" value="{{'Buy'|translate}}" ng-disabled="buyForm.$invalid || buy.loading">
@@ -74,13 +74,13 @@
-

Purchase complete

+

Purchase complete

A transfer has been initiated from your bank account. Your bitcoin should arrive in your wallet in 4-6 business days.

diff --git a/public/views/sellGlidera.html b/public/views/sellGlidera.html index d1125fce8..0ee649931 100644 --- a/public/views/sellGlidera.html +++ b/public/views/sellGlidera.html @@ -1,19 +1,32 @@
+ ng-init="titleSection='Sell'; goBackToState = 'glidera'">
-
+
+ +
+
+
+
+
+
+
+
+
+ {{sell.loading|translate}} +
+
+
- +
BTC USD - + +
+ Sell + ${{sell.sellPrice.subtotal}} {{sell.sellPrice.currency}} in Bitcoin + {{sell.sellPrice.qty}} BTC + at ${{sell.sellPrice.price}} {{sell.sellPrice.currency}} +
+ +
-
-
- Sell - ${{sell.sellPrice.subtotal}} {{sell.sellPrice.currency}} in Bitcoin - {{sell.sellPrice.qty}} BTC - at ${{sell.sellPrice.price}} {{sell.sellPrice.currency}} -
+
-

- The bitcoin amount of {{sell.sellPrice.qty}} will be immediately sent from your bitcoin - wallet ({{index.walletName}}) to Glidera. +

+ The bitcoin amount of {{sell.sellPrice.qty}} will be immediately sent from your bitcoin wallet ({{index.walletName}}) to Glidera.

-

- The total of ${{sell.sellPrice.subtotal}} {{sell.sellPrice.currency}} will be deposited - in your bank account in 4-6 business days. +

+ The total of ${{sell.sellPrice.subtotal}} {{sell.sellPrice.currency}} will be deposited in your bank account in 4-6 business days.

- + ng-submit="sell.createTx(index.glideraToken, index.glideraPermissions, twoFaCode)" novalidate> + - +
+
+ + {{sell.error|translate}} + +
-

Sale complete

-

+

Sale complete

+

A transfer has been initiated to your bank account and should arrive in 4-6 business days.

+ ng-click="$root.go('glidera')" translate>Finish
diff --git a/public/views/walletHome.html b/public/views/walletHome.html index f37b8b4a5..801be5d0a 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -168,26 +168,18 @@
-
-

Payment Proposals

-
-
- -
- Total Locked Balance: - {{index.lockedBalanceStr}} - {{index.lockedBalanceAlternative}} - {{index.alternativeIsoCode}} -
+

Payment Proposals

+

Unsent transactions

+
-
-

Unsent transactions

-
-
+
+ Total Locked Balance: + {{index.lockedBalanceStr}} + {{index.lockedBalanceAlternative}} + {{index.alternativeIsoCode}}
diff --git a/src/js/controllers/buyGlidera.js b/src/js/controllers/buyGlidera.js index 481a8e047..979b1bf6a 100644 --- a/src/js/controllers/buyGlidera.js +++ b/src/js/controllers/buyGlidera.js @@ -7,6 +7,7 @@ angular.module('copayApp.controllers').controller('buyGlideraController', this.show2faCodeInput = null; this.error = null; this.success = null; + this.loading = null; this.getBuyPrice = function(token, price) { var self = this; @@ -26,14 +27,15 @@ angular.module('copayApp.controllers').controller('buyGlideraController', this.get2faCode = function(token) { var self = this; - this.loading = true; + this.loading = gettext('Sending 2FA code...'); $timeout(function() { glideraService.get2faCode(token, function(err, sent) { - self.loading = false; + self.loading = null; if (err) { - self.error = gettext('Glidera could not the 2FA code to your phone'); + self.error = gettext('Glidera could not send the 2FA code to your phone'); } else { + self.error = null; self.show2faCodeInput = sent; } }); @@ -51,7 +53,7 @@ angular.module('copayApp.controllers').controller('buyGlideraController', $scope.$apply(); } else { - self.loading = true; + self.loading = gettext('Buying bitcoin...'); var data = { destinationAddress: addr, qty: self.buyPrice.qty, @@ -61,7 +63,7 @@ angular.module('copayApp.controllers').controller('buyGlideraController', }; $timeout(function() { glideraService.buy(token, twoFaCode, data, function(err, data) { - self.loading = false; + self.loading = null; if (err) { self.error = gettext('Could not buy bitcoin'); } diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index c33650f43..6c66909c9 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -393,6 +393,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.setOngoingProcess('updatingPendingTxps', true); $log.debug('Updating PendingTxps'); fc.getTxProposals({}, function(err, txps) { +console.log('[index.js:395]',txps); //TODO self.setOngoingProcess('updatingPendingTxps', false); if (err) { self.handleError(err); @@ -950,6 +951,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.updateGlidera(accessToken, permissions); }); + $rootScope.$on('Local/GlideraError', function(event) { + self.debouncedUpdate(); + }); + $rootScope.$on('Local/UnitSettingUpdated', function(event) { self.updateAll(); self.updateTxHistory(); diff --git a/src/js/controllers/sellGlidera.js b/src/js/controllers/sellGlidera.js index 2deb79142..782379194 100644 --- a/src/js/controllers/sellGlidera.js +++ b/src/js/controllers/sellGlidera.js @@ -7,38 +7,64 @@ angular.module('copayApp.controllers').controller('sellGlideraController', this.data = {}; this.show2faCodeInput = null; this.success = null; + this.error = null; + this.loading = null; this.currentSpendUnconfirmed = config.wallet.spendUnconfirmed; this.currentFeeLevel = config.wallet.settings.feeLevel || 'normal'; this.getSellPrice = function(token, price) { var self = this; if (!price || (price && !price.qty && !price.fiat)) { + this.error = null; this.sellPrice = null; return; } - glideraService.sellPrice(token, price, function(error, sellPrice) { - self.sellPrice = sellPrice; + glideraService.sellPrice(token, price, function(err, sellPrice) { + if (err) { + self.error = gettext('Glidera could not get pricing to sell bitcoin'); + } + else { + self.error = null; + self.sellPrice = sellPrice; + } }); }; this.get2faCode = function(token) { var self = this; + this.loading = gettext('Sending 2FA code...'); $timeout(function() { - glideraService.get2faCode(token, function(error, sent) { - self.show2faCodeInput = sent; + glideraService.get2faCode(token, function(err, sent) { + self.loading = null; + if (err) { + self.error = gettext('Glidera could not send the 2FA code to your phone'); + } + else { + self.show2faCodeInput = sent; + } }); }, 100); }; - this.createTx = function(token, twoFaCode) { + this.createTx = function(token, permissions, twoFaCode) { var self = this; var fc = profileService.focusedClient; + self.error = null; + this.loading = gettext('Selling Bitcoin...'); $timeout(function() { addressService.getAddress(fc.credentials.walletId, null, function(err, refundAddress) { - if (!refundAddress) return; + if (!refundAddress) { + self.loading = null; + self.error = gettext('Could not get the bitcoin address'); + return; + } glideraService.getSellAddress(token, function(error, sellAddress) { - if (!sellAddress) return; + if (!sellAddress) { + self.loading = null; + self.error = gettext('Could not get the destination bitcoin address'); + return; + } var amount = parseInt((self.sellPrice.qty * 100000000).toFixed(0)); feeService.getCurrentFeeValue(self.currentFeeLevel, function(err, feePerKb) { @@ -47,6 +73,7 @@ angular.module('copayApp.controllers').controller('sellGlideraController', toAddress: sellAddress, amount: amount, message: 'Glidera', + customData: {'glideraToken': token}, payProUrl: null, feePerKb: feePerKb, excludeUnconfirmedUtxos: self.currentSpendUnconfirmed ? false : true @@ -54,32 +81,48 @@ angular.module('copayApp.controllers').controller('sellGlideraController', if (err) { profileService.lockFC(); $log.error(err); + $timeout(function() { + self.loading = null; + self.error = gettext('Could not create transaction'); + }, 1); return; } if (!fc.canSign()) { + self.loading = null; $log.info('No signing proposal: No private key'); return; } - _signTx(txp, function(err, rawTx) { + _signTx(txp, function(err, txp, rawTx) { profileService.lockFC(); if (err) { - self.error = err.message ? err.message : gettext('The payment was created but could not be completed. Please try again from home screen'); - $timeout(function() { - $scope.$digest(); - }, 1); + self.loading = null; + self.error = err; + $scope.$apply(); } else { var data = { refundAddress: refundAddress, signedTransaction: rawTx, priceUuid: self.sellPrice.priceUuid, - useCurrentPrice: false, + useCurrentPrice: self.sellPrice.priceUuid ? false : true, ip: null }; - glideraService.sell(token, twoFaCode, data, function(error, data) { - self.success = data + glideraService.sell(token, twoFaCode, data, function(err, data) { + self.loading = null; + if (err) { + self.error = gettext('Could not sell bitcoin'); + fc.removeTxProposal(txp, function(err, txpb) { + $timeout(function() { + $scope.$emit('Local/GlideraError'); + }, 100); + }); + } + else { + self.success = data; + $scope.$emit('Local/GlideraUpdated', token, permissions); + } }); } }); @@ -98,16 +141,16 @@ angular.module('copayApp.controllers').controller('sellGlideraController', fc.signTxProposal(txp, function(err, signedTx) { profileService.lockFC(); if (err) { - err.message = bwsError.msg(err, gettextCatalog.getString('The payment was created but could not be signed. Please try again from home screen')); + err = gettext('The payment was created but could not be signed'); return cb(err); } + else { + if (signedTx.status == 'accepted') { + return cb(null, txp, signedTx.raw); - if (signedTx.status == 'accepted') { - return cb(null, signedTx.raw); - - } else { - return cb(true); - console.log('NO ACCEPTED TX'); + } else { + return cb(gettext('The transaction could not be signed')); + } } }); };