Coinbase: first step integration, connect account and main view
This commit is contained in:
parent
eea32d3069
commit
af932b3e59
8 changed files with 466 additions and 244 deletions
|
|
@ -1,25 +1,53 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('coinbaseController',
|
||||
function($rootScope, $scope, $timeout, $ionicModal, profileService, configService, storageService, coinbaseService, lodash, platformInfo, ongoingProcess) {
|
||||
angular.module('copayApp.controllers').controller('coinbaseController', function($rootScope, $scope, $timeout, $ionicModal, $log, profileService, configService, storageService, coinbaseService, lodash, platformInfo, ongoingProcess, popupService, gettextCatalog, externalLinkService) {
|
||||
|
||||
var isNW = platformInfo.isNW;
|
||||
var isNW = platformInfo.isNW;
|
||||
|
||||
if (platformInfo.isCordova && StatusBar.isVisible) {
|
||||
StatusBar.backgroundColorByHexString("#4B6178");
|
||||
}
|
||||
var init = function() {
|
||||
ongoingProcess.set('connectingCoinbase', true);
|
||||
coinbaseService.init($scope.accessToken, function(err, data) {
|
||||
console.log('[coinbase.js:9]',data); //TODO)
|
||||
ongoingProcess.set('connectingCoinbase', false);
|
||||
if (err || lodash.isEmpty(data)) {
|
||||
if (err) {
|
||||
popupService.showAlert(gettextCatalog.getString('Error'), err);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Updating accessToken and accountId
|
||||
$timeout(function() {
|
||||
$scope.accessToken = data.accessToken;
|
||||
$scope.accountId = data.accountId;
|
||||
$scope.updateTransactions();
|
||||
$scope.$apply();
|
||||
}, 100);
|
||||
});
|
||||
};
|
||||
|
||||
this.openAuthenticateWindow = function() {
|
||||
var oauthUrl = this.getAuthenticateUrl();
|
||||
if (!isNW) {
|
||||
$rootScope.openExternalLink(oauthUrl, '_system');
|
||||
} else {
|
||||
var self = this;
|
||||
var gui = require('nw.gui');
|
||||
var win = gui.Window.open(oauthUrl, {
|
||||
focus: true,
|
||||
position: 'center'
|
||||
});
|
||||
$scope.updateTransactions = function() {
|
||||
$log.debug('Checking for transactions...');
|
||||
coinbaseService.getPendingTransactions($scope.accessToken, $scope.accountId, function(err, txs) {
|
||||
console.log('[coinbase.js:43]',txs); //TODO)
|
||||
$scope.pendingTransactions = txs;
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.openAuthenticateWindow = function() {
|
||||
var oauthUrl = this.getAuthenticateUrl();
|
||||
externalLinkService.open(oauthUrl);
|
||||
/*
|
||||
* Not working (NW bug)
|
||||
if (!isNW) {
|
||||
externalLinkService.open(oauthUrl);
|
||||
} else {
|
||||
var self = this;
|
||||
var gui = require('nw.gui');
|
||||
gui.Window.open(oauthUrl, {
|
||||
focus: true,
|
||||
position: 'center'
|
||||
}, function(win) {
|
||||
win.on('loaded', function() {
|
||||
var title = win.title;
|
||||
if (title.indexOf('Coinbase') == -1) {
|
||||
|
|
@ -28,51 +56,47 @@ angular.module('copayApp.controllers').controller('coinbaseController',
|
|||
win.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.getAuthenticateUrl = function() {
|
||||
return coinbaseService.getOauthCodeUrl();
|
||||
};
|
||||
|
||||
this.submitOauthCode = function(code) {
|
||||
var self = this;
|
||||
var coinbaseTestnet = configService.getSync().coinbase.testnet;
|
||||
var network = coinbaseTestnet ? 'testnet' : 'livenet';
|
||||
ongoingProcess.set('connectingCoinbase', true);
|
||||
this.error = null;
|
||||
$timeout(function() {
|
||||
coinbaseService.getToken(code, function(err, data) {
|
||||
ongoingProcess.set('connectingCoinbase', false);
|
||||
if (err) {
|
||||
self.error = err;
|
||||
$timeout(function() {
|
||||
$scope.$apply();
|
||||
}, 100);
|
||||
} else if (data && data.access_token && data.refresh_token) {
|
||||
storageService.setCoinbaseToken(network, data.access_token, function() {
|
||||
storageService.setCoinbaseRefreshToken(network, data.refresh_token, function() {
|
||||
$scope.$emit('Local/CoinbaseUpdated', data.access_token);
|
||||
$timeout(function() {
|
||||
$scope.$apply();
|
||||
}, 100);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 100);
|
||||
};
|
||||
|
||||
this.openTxModal = function(tx) {
|
||||
$scope.tx = tx;
|
||||
|
||||
$ionicModal.fromTemplateUrl('views/modals/coinbase-tx-details.html', {
|
||||
scope: $scope,
|
||||
animation: 'slide-in-up'
|
||||
}).then(function(modal) {
|
||||
$scope.coinbaseTxDetailsModal = modal;
|
||||
$scope.coinbaseTxDetailsModal.show();
|
||||
});
|
||||
};
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
this.getAuthenticateUrl = function() {
|
||||
return coinbaseService.getOauthCodeUrl();
|
||||
};
|
||||
|
||||
this.submitOauthCode = function(code) {
|
||||
var self = this;
|
||||
ongoingProcess.set('connectingCoinbase', true);
|
||||
$scope.error = null;
|
||||
$timeout(function() {
|
||||
coinbaseService.getToken(code, function(err, accessToken) {
|
||||
ongoingProcess.set('connectingCoinbase', false);
|
||||
if (err) {
|
||||
popupService.showAlert(gettextCatalog.getString('Error'), err);
|
||||
return;
|
||||
}
|
||||
$scope.accessToken = accessToken;
|
||||
init();
|
||||
});
|
||||
}, 100);
|
||||
};
|
||||
|
||||
this.openTxModal = function(tx) {
|
||||
$scope.tx = tx;
|
||||
|
||||
$ionicModal.fromTemplateUrl('views/modals/coinbase-tx-details.html', {
|
||||
scope: $scope,
|
||||
animation: 'slide-in-up'
|
||||
}).then(function(modal) {
|
||||
$scope.coinbaseTxDetailsModal = modal;
|
||||
$scope.coinbaseTxDetailsModal.show();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.$on("$ionicView.beforeEnter", function(event, data) {
|
||||
coinbaseService.setCredentials();
|
||||
$scope.network = coinbaseService.getEnvironment();
|
||||
init();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue