Handle Glidera errors

This commit is contained in:
Gustavo Maximiliano Cortez 2017-03-03 17:08:55 -03:00
parent 162357835c
commit e796035ee2
No known key found for this signature in database
GPG Key ID: 15EDAD8D9F2EB1AF
2 changed files with 48 additions and 10 deletions

View File

@ -8,8 +8,14 @@ angular.module('copayApp.controllers').controller('glideraController',
};
var init = function() {
ongoingProcess.set('connectingGlidera', true);
glideraService.init(function(err, data) {
if (err || lodash.isEmpty(data)) return;
ongoingProcess.set('connectingGlidera', false);
if (err) {
popupService.showAlert('Error connecting Glidera', err + '. Please re-connect to Glidera');
return;
}
if (!data || (data && !data.token)) return;
$scope.account['token'] = data.token;
$scope.account['status'] = data.status;
@ -91,7 +97,7 @@ angular.module('copayApp.controllers').controller('glideraController',
$scope.showOauthForm = !$scope.showOauthForm;
}
$scope.$on("$ionicView.beforeEnter", function(event, data) {
$scope.$on("$ionicView.afterEnter", function(event, data) {
$scope.network = glideraService.getNetwork();
$scope.currency = glideraService.getCurrency();
$scope.showOauthForm = false;

View File

@ -93,11 +93,13 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
storageService.removeGlideraToken(credentials.NETWORK, function() {
storageService.removeGlideraPermissions(credentials.NETWORK, function() {
storageService.removeGlideraStatus(credentials.NETWORK, function() {
storageService.removeGlideraTxs(credentials.NETWORK, function() {
buyAndSellService.updateLink('glidera', false);
return cb();
});
});
});
});
};
root.getToken = function(code, cb) {
@ -170,8 +172,8 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
$log.info('Glidera Access Token Permissions: SUCCESS');
return cb(null, data.data);
}, function(data) {
$log.error('Glidera Access Token Permissions: ERROR ' + data.statusText);
var message = data.data && data.data.message ? data.data.message : data.statusText;
$log.error('Glidera Access Token Permissions: ERROR ' + message);
return cb(message);
});
};
@ -353,6 +355,29 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
});
};
var getPermissions = function(accessToken, network, force, cb) {
storageService.getGlideraPermissions(network, function(err, permissions) {
if (lodash.isString(permissions)) permissions = JSON.parse(permissions);
if (force || lodash.isEmpty(permissions)) {
root.getAccessTokenPermissions(accessToken, function(err, p) {
if (err) {
// Return error and remove token
root.remove(function() {
return cb(err);
});
} else {
// Return permissions and store
storageService.setGlideraPermissions(network, JSON.stringify(p), function() {
return cb(null, p);
});
}
});
} else {
return cb(null, permissions);
}
});
};
root.init = function(cb) {
if (lodash.isEmpty(credentials.CLIENT_ID)) {
return cb('Glidera is Disabled');
@ -360,10 +385,11 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
$log.debug('Trying to initialise Glidera...');
storageService.getGlideraToken(credentials.NETWORK, function(err, accessToken) {
if (err || lodash.isEmpty(accessToken)) return cb();
if (lodash.isEmpty(accessToken)) return cb();
getPermissions(accessToken, credentials.NETWORK, true, function(err, permissions) {
if (err) return cb(err);
storageService.getGlideraPermissions(credentials.NETWORK, function(err, permissions) {
if (lodash.isString(permissions)) permissions = JSON.parse(permissions);
storageService.getGlideraStatus(credentials.NETWORK, function(err, status) {
if (lodash.isString(status)) status = JSON.parse(status);
storageService.getGlideraTxs(credentials.NETWORK, function(err, txs) {
@ -384,20 +410,23 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
root.updateStatus = function(data) {
storageService.getGlideraToken(credentials.NETWORK, function(err, accessToken) {
if (err) return;
root.getAccessTokenPermissions(accessToken, function(err, permissions) {
getPermissions(accessToken, credentials.NETWORK, false, function(err, permissions) {
if (err) return;
storageService.setGlideraPermissions(credentials.NETWORK, JSON.stringify(permissions), function() {});
data.permissions = permissions;
data.price = {};
root.buyPrice(accessToken, {qty: 1}, function(err, buy) {
if (err) return;
data.price['buy'] = buy.price;
});
root.sellPrice(accessToken, {qty: 1}, function(err, sell) {
if (err) return;
data.price['sell'] = sell.price;
});
root.getStatus(accessToken, function(err, status) {
if (err) return;
data.status = status;
storageService.setGlideraStatus(credentials.NETWORK, JSON.stringify(status), function() {});
});
@ -408,6 +437,7 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
if (permissions.transaction_history) {
root.getTransactions(accessToken, function(err, txs) {
if (err) return;
storageService.setGlideraTxs(credentials.NETWORK, JSON.stringify(txs), function() {});
data.txs = txs;
});
@ -415,11 +445,13 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l
if (permissions.view_email_address) {
root.getEmail(accessToken, function(err, email) {
if (err) return;
data.email = email;
});
}
if (permissions.personal_info) {
root.getPersonalInfo(accessToken, function(err, info) {
if (err) return;
data.personalInfo = info;
});
}