Clean code. Fix coinbase tx modal

This commit is contained in:
Gustavo Maximiliano Cortez 2017-01-13 01:05:52 -03:00
commit 9ac1e565ac
No known key found for this signature in database
GPG key ID: 15EDAD8D9F2EB1AF
5 changed files with 77 additions and 62 deletions

View file

@ -8,31 +8,34 @@ angular.module('copayApp.controllers').controller('coinbaseController', function
var init = function() {
var config = configService.getSync().wallet.settings;
$scope.currency = getCurrency(config.alternativeIsoCode);
ongoingProcess.set('connectingCoinbase', true);
coinbaseService.init(function(err, data) {
ongoingProcess.set('connectingCoinbase', false);
if (err || lodash.isEmpty(data)) {
if (err) {
popupService.showAlert(gettextCatalog.getString('Error'), err);
coinbaseService.getStoredToken(function(at) {
$scope.accessToken = at;
// Update Access Token if necessary
coinbaseService.init(function(err, data) {
if (err || lodash.isEmpty(data)) {
if (err) {
popupService.showAlert(gettextCatalog.getString('Error'), err);
}
return;
}
return;
}
// Show rates
coinbaseService.buyPrice(data.accessToken, $scope.currency, function(err, b) {
$scope.buyPrice = b.data || null;
});
coinbaseService.sellPrice(data.accessToken, $scope.currency, function(err, s) {
$scope.sellPrice = s.data || null;
});
// Show rates
coinbaseService.buyPrice(data.accessToken, $scope.currency, function(err, b) {
$scope.buyPrice = b.data || null;
});
coinbaseService.sellPrice(data.accessToken, $scope.currency, function(err, s) {
$scope.sellPrice = s.data || null;
});
// Updating accessToken and accountId
$timeout(function() {
$scope.accessToken = data.accessToken;
$scope.accountId = data.accountId;
$scope.updateTransactions();
$scope.$apply();
}, 100);
// Updating accessToken and accountId
$timeout(function() {
$scope.accessToken = data.accessToken;
$scope.accountId = data.accountId;
$scope.updateTransactions();
$scope.$apply();
}, 100);
});
});
};
@ -104,8 +107,8 @@ angular.module('copayApp.controllers').controller('coinbaseController', function
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.coinbaseTxDetailsModal = modal;
$scope.coinbaseTxDetailsModal.show();
$scope.modal = modal;
$scope.modal.show();
});
};

View file

@ -1,18 +1,28 @@
'use strict';
angular.module('copayApp.controllers').controller('coinbaseTxDetailsController', function($scope, $rootScope, coinbaseService) {
angular.module('copayApp.controllers').controller('coinbaseTxDetailsController', function($scope, coinbaseService, popupService) {
$scope.remove = function() {
coinbaseService.savePendingTransaction($scope.tx, {
remove: true
}, function(err) {
$rootScope.$emit('Local/CoinbaseTx');
$scope.close();
coinbaseService.setCredentials();
$scope.updateRequired = false;
var message = 'Are you sure you want to remove this transaction?';
popupService.showConfirm(null, message, null, null, function(ok) {
if (!ok) {
return;
}
coinbaseService.savePendingTransaction($scope.tx, {
remove: true
}, function(err) {
$scope.updateRequired = true;
$scope.close();
});
});
};
$scope.close = function() {
$scope.coinbaseTxDetailsModal.hide();
$scope.modal.hide().then(function() {
if ($scope.updateRequired) $scope.updateTransactions();
});
};
});

View file

@ -97,6 +97,13 @@ angular.module('copayApp.services').factory('coinbaseService', function($http, $
return credentials.NETWORK;
};
root.getStoredToken = function(cb) {
storageService.getCoinbaseToken(credentials.NETWORK, function(err, accessToken) {
if (err || !accessToken) return cb();
return cb(accessToken);
});
};
root.getOauthCodeUrl = function() {
return credentials.HOST
+ '/oauth/authorize?response_type=code&client_id='
@ -478,16 +485,17 @@ angular.module('copayApp.services').factory('coinbaseService', function($http, $
};
root.getPendingTransactions = function(coinbasePendingTransactions) {
root.init(function(err, data) {
if (err || lodash.isEmpty(data)) {
if (err) $log.error(err);
return;
}
var accessToken = data.accessToken;
var accountId = data.accountId;
storageService.getCoinbaseTxs(credentials.NETWORK, function(err, txs) {
txs = txs ? JSON.parse(txs) : {};
coinbasePendingTransactions.data = lodash.isEmpty(txs) ? null : txs;
storageService.getCoinbaseTxs(credentials.NETWORK, function(err, txs) {
txs = txs ? JSON.parse(txs) : {};
coinbasePendingTransactions.data = lodash.isEmpty(txs) ? null : txs;
root.init(function(err, data) {
if (err || lodash.isEmpty(data)) {
if (err) $log.error(err);
return;
}
var accessToken = data.accessToken;
var accountId = data.accountId;
lodash.forEach(coinbasePendingTransactions.data, function(dataFromStorage, txId) {
if ((dataFromStorage.type == 'sell' && dataFromStorage.status == 'completed') ||

View file

@ -13,7 +13,7 @@
</ul>
</div>
<div ng-if="!accountId && !error" ng-init="showOauthForm = false">
<div ng-if="!accessToken && !error" ng-init="showOauthForm = false">
<div class="text-center m20v">
<img src="img/coinbase-logo.png" width="200">
</div>
@ -53,20 +53,22 @@
</div>
</div>
<div ng-if="accountId && !error">
<div ng-if="accessToken && !error">
<div class="m20t text-center" ng-show="accountId" ng-click="updateTransactions()">
<div class="m20t text-center" ng-click="updateTransactions()">
<img src="img/coinbase-logo.png" width="200">
</div>
<div class="m10t size-12 text-center text-gray" ng-if="buyPrice && sellPrice">
{{buyPrice.amount}} {{buyPrice.currency}}
|
{{sellPrice.amount}} {{sellPrice.currency}}
<div class="m10t size-12 text-center text-gray">
<span ng-show="!buyPrice || !sellPrice"> ... | ... </span>
<span ng-show="buyPrice && sellPrice">
{{buyPrice.amount}} {{buyPrice.currency}}
|
{{sellPrice.amount}} {{sellPrice.currency}}
</span>
</div>
<div class="list card"
ng-show="accountId">
<div class="list card">
<a class="item item-icon-right"
href ui-sref="tabs.buyandsell.coinbase.amount({nextStep: 'tabs.buyandsell.coinbase.buy', currency: currency})">
<img src="img/buy-bitcoin.svg" alt="buy bitcoin" width="35" class="item-img-buy">

View file

@ -79,18 +79,10 @@
<span ng-show="tx.to && tx.type == 'send'">Receive bitcoin in</span>
<span class="item-note">{{tx.description}}</span>
</li>
<div ng-show="tx.status == 'error'" class="item item-divider"></div>
<div ng-show="tx.status == 'error'" class="item assertive" ng-click="remove()">
Remove transaction
</div>
</ul>
<div class="list" ng-show="tx.status == 'error'">
<div class="item item-divider">
This action will remove the transaction.
</div>
<div class="item">
<a ng-click="remove()">
Remove
</a>
</div>
</div>
</ion-content>
</ion-modal-view>