From b8c2ff863d074c2cece16cd26896b40a1dee4a4b Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Fri, 29 Apr 2016 10:27:46 -0300 Subject: [PATCH] Fix coinbase logout for some cases where refreshToken tries to connect again (#4155) --- src/js/controllers/index.js | 1 + src/js/controllers/preferencesCoinbase.js | 6 +++--- src/js/services/coinbaseService.js | 8 ++++++++ src/js/services/storageService.js | 4 ++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index cae2e3b69..dc4f08ce0 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -1419,6 +1419,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.refreshCoinbaseToken = function() { var network = self.coinbaseTestnet ? 'testnet' : 'livenet'; storageService.getCoinbaseRefreshToken(network, function(err, refreshToken) { + if (!refreshToken) return; coinbaseService.refreshToken(refreshToken, function(err, data) { if (err) { self.coinbaseError = err; diff --git a/src/js/controllers/preferencesCoinbase.js b/src/js/controllers/preferencesCoinbase.js index a878bb4bf..d920daebd 100644 --- a/src/js/controllers/preferencesCoinbase.js +++ b/src/js/controllers/preferencesCoinbase.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesCoinbaseController', - function($scope, $modal, $timeout, applicationService, coinbaseService, storageService, animationService) { + function($scope, $modal, $timeout, applicationService, coinbaseService, animationService) { this.revokeToken = function(testnet) { var network = testnet ? 'testnet' : 'livenet'; @@ -22,10 +22,10 @@ angular.module('copayApp.controllers').controller('preferencesCoinbaseController modalInstance.result.then(function(ok) { if (ok) { - storageService.removeCoinbaseToken(network, function() { + coinbaseService.logout(network, function() { $timeout(function() { applicationService.restart(); - }, 100); + }, 1000); }); } }); diff --git a/src/js/services/coinbaseService.js b/src/js/services/coinbaseService.js index aa0e46354..e5faed445 100644 --- a/src/js/services/coinbaseService.js +++ b/src/js/services/coinbaseService.js @@ -361,6 +361,14 @@ angular.module('copayApp.services').factory('coinbaseService', function($http, $ }); }; + root.logout = function(network, cb) { + storageService.removeCoinbaseToken(network, function() { + storageService.removeCoinbaseRefreshToken(network, function() { + return cb(); + }); + }); + }; + return root; }); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 50a0c0249..28515a004 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -231,6 +231,10 @@ angular.module('copayApp.services') storage.get('coinbaseRefreshToken-' + network, cb); }; + root.removeCoinbaseRefreshToken = function(network, cb) { + storage.remove('coinbaseRefreshToken-' + network, cb); + }; + root.setCoinbaseToken = function(network, token, cb) { storage.set('coinbaseToken-' + network, token, cb); };