mirror of https://github.com/BTCPrivate/copay.git
Add settings for Coinbase
This commit is contained in:
parent
72c99fb876
commit
cc8d75a2f5
|
@ -6,4 +6,49 @@
|
||||||
|
|
||||||
<ion-content>
|
<ion-content>
|
||||||
|
|
||||||
|
<ion-list *ngIf="coinbaseAccount && coinbaseAccount.balance">
|
||||||
|
<ion-item-divider>Account</ion-item-divider>
|
||||||
|
<ion-item>
|
||||||
|
<span>ID</span>
|
||||||
|
<ion-note item-end>
|
||||||
|
{{coinbaseAccount.id}}
|
||||||
|
</ion-note>
|
||||||
|
</ion-item>
|
||||||
|
<ion-item>
|
||||||
|
<span>Name</span>
|
||||||
|
<ion-note item-end>
|
||||||
|
{{coinbaseAccount.name}}
|
||||||
|
</ion-note>
|
||||||
|
</ion-item>
|
||||||
|
<ion-item>
|
||||||
|
<span>Balance</span>
|
||||||
|
<ion-note item-end>
|
||||||
|
{{coinbaseAccount.balance.amount}} {{coinbaseAccount.balance.currency}}
|
||||||
|
</ion-note>
|
||||||
|
</ion-item>
|
||||||
|
</ion-list>
|
||||||
|
|
||||||
|
<ion-list *ngIf="coinbaseUser">
|
||||||
|
<ion-item-divider>User Information</ion-item-divider>
|
||||||
|
<ion-item>
|
||||||
|
<span>ID</span>
|
||||||
|
<ion-note item-end>
|
||||||
|
{{coinbaseUser.id}}
|
||||||
|
</ion-note>
|
||||||
|
</ion-item>
|
||||||
|
<ion-item>
|
||||||
|
<span>Email</span>
|
||||||
|
<ion-note item-end>
|
||||||
|
{{coinbaseUser.email}}
|
||||||
|
</ion-note>
|
||||||
|
</ion-item>
|
||||||
|
</ion-list>
|
||||||
|
|
||||||
|
<ion-list>
|
||||||
|
<ion-item-divider></ion-item-divider>
|
||||||
|
<button ion-item (click)="revokeToken()">
|
||||||
|
<span class="assertive">Log out</span>
|
||||||
|
</button>
|
||||||
|
</ion-list>
|
||||||
|
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { ViewController, NavParams } from 'ionic-angular';
|
import { NavController } from 'ionic-angular';
|
||||||
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
|
import { Logger } from '../../../../providers/logger/logger';
|
||||||
|
import { OnGoingProcessProvider } from '../../../../providers/on-going-process/on-going-process';
|
||||||
|
import { PopupProvider } from '../../../../providers/popup/popup';
|
||||||
import { CoinbaseProvider } from '../../../../providers/coinbase/coinbase';
|
import { CoinbaseProvider } from '../../../../providers/coinbase/coinbase';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -9,11 +13,58 @@ import { CoinbaseProvider } from '../../../../providers/coinbase/coinbase';
|
||||||
})
|
})
|
||||||
export class CoinbaseSettingsPage {
|
export class CoinbaseSettingsPage {
|
||||||
|
|
||||||
|
public coinbaseAccount: any;
|
||||||
|
public coinbaseUser: any;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public viewCtrl: ViewController,
|
private navCtrl: NavController,
|
||||||
public coinbaseProvider: CoinbaseProvider,
|
private onGoingProcessProvider: OnGoingProcessProvider,
|
||||||
public navParams: NavParams
|
private popupProvider: PopupProvider,
|
||||||
|
private logger: Logger,
|
||||||
|
private coinbaseProvider: CoinbaseProvider
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ionViewDidLoad() {
|
||||||
|
this.onGoingProcessProvider.set('connectingCoinbase', true);
|
||||||
|
this.coinbaseProvider.init((err, data) => {
|
||||||
|
if (err || _.isEmpty(data)) {
|
||||||
|
this.onGoingProcessProvider.set('connectingCoinbase', false);
|
||||||
|
if (err) {
|
||||||
|
this.logger.error(err);
|
||||||
|
let errorId = err.errors ? err.errors[0].id : null;
|
||||||
|
err = err.errors ? err.errors[0].message : err;
|
||||||
|
this.popupProvider.ionicAlert('Error connecting to Coinbase', err).then(() => {
|
||||||
|
if (errorId == 'revoked_token') {
|
||||||
|
this.coinbaseProvider.logout();
|
||||||
|
this.navCtrl.popToRoot();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let accessToken = data.accessToken;
|
||||||
|
let accountId = data.accountId;
|
||||||
|
this.coinbaseProvider.getAccount(accessToken, accountId, (err, account) => {
|
||||||
|
this.onGoingProcessProvider.set('connectingCoinbase', false);
|
||||||
|
this.coinbaseAccount = account.data[0];
|
||||||
|
});
|
||||||
|
this.coinbaseProvider.getCurrentUser(accessToken, (err, user) => {
|
||||||
|
this.coinbaseUser = user.data;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public revokeToken() {
|
||||||
|
this.popupProvider.ionicConfirm(
|
||||||
|
'Coinbase',
|
||||||
|
'Are you sure you would like to log out of your Coinbase account?'
|
||||||
|
).then((res) => {
|
||||||
|
if (res) {
|
||||||
|
this.coinbaseProvider.logout();
|
||||||
|
this.navCtrl.popToRoot();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { NavParams, NavController, ModalController } from 'ionic-angular';
|
import { NavController } from 'ionic-angular';
|
||||||
import { Logger } from '../../../../providers/logger/logger';
|
import { Logger } from '../../../../providers/logger/logger';
|
||||||
|
|
||||||
import { HomePage } from '../../../home/home';
|
|
||||||
import { GlideraProvider } from '../../../../providers/glidera/glidera';
|
import { GlideraProvider } from '../../../../providers/glidera/glidera';
|
||||||
import { PopupProvider } from '../../../../providers/popup/popup';
|
import { PopupProvider } from '../../../../providers/popup/popup';
|
||||||
|
|
||||||
|
@ -15,7 +14,6 @@ export class GlideraSettingsPage {
|
||||||
public account: any;
|
public account: any;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private navParams: NavParams,
|
|
||||||
private navCtrl: NavController,
|
private navCtrl: NavController,
|
||||||
private popupProvider: PopupProvider,
|
private popupProvider: PopupProvider,
|
||||||
private logger: Logger,
|
private logger: Logger,
|
||||||
|
@ -46,17 +44,6 @@ export class GlideraSettingsPage {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private showError = function (title: string, msg: any): Promise<any> {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
title = title || 'Error'; // TODO: gettextCatalog
|
|
||||||
this.logger.error(msg);
|
|
||||||
msg = (msg && msg.errors) ? msg.errors[0].message : msg;
|
|
||||||
this.popupProvider.ionicAlert(title, msg).then(() => {
|
|
||||||
return resolve();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public revokeToken() {
|
public revokeToken() {
|
||||||
this.popupProvider.ionicConfirm(
|
this.popupProvider.ionicConfirm(
|
||||||
'Glidera',
|
'Glidera',
|
||||||
|
|
|
@ -126,6 +126,7 @@ export class CoinbaseProvider {
|
||||||
if (data && data.access_token && data.refresh_token) {
|
if (data && data.access_token && data.refresh_token) {
|
||||||
this.persistenceProvider.setCoinbaseToken(this.credentials.NETWORK, data.access_token)
|
this.persistenceProvider.setCoinbaseToken(this.credentials.NETWORK, data.access_token)
|
||||||
this.persistenceProvider.setCoinbaseRefreshToken(this.credentials.NETWORK, data.refresh_token)
|
this.persistenceProvider.setCoinbaseRefreshToken(this.credentials.NETWORK, data.refresh_token)
|
||||||
|
this.homeIntegrationsProvider.update('coinbase', data.access_token); // Name, Token
|
||||||
return cb(null, data.access_token);
|
return cb(null, data.access_token);
|
||||||
} else {
|
} else {
|
||||||
return cb('Could not get the access token');
|
return cb('Could not get the access token');
|
||||||
|
@ -309,6 +310,7 @@ export class CoinbaseProvider {
|
||||||
this.persistenceProvider.removeCoinbaseToken(this.credentials.NETWORK);
|
this.persistenceProvider.removeCoinbaseToken(this.credentials.NETWORK);
|
||||||
this.persistenceProvider.removeCoinbaseRefreshToken(this.credentials.NETWORK);
|
this.persistenceProvider.removeCoinbaseRefreshToken(this.credentials.NETWORK);
|
||||||
this.persistenceProvider.removeCoinbaseTxs(this.credentials.NETWORK);
|
this.persistenceProvider.removeCoinbaseTxs(this.credentials.NETWORK);
|
||||||
|
this.homeIntegrationsProvider.update('coinbase', null); // Name, Token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue