Add settings for Coinbase

This commit is contained in:
Gustavo Maximiliano Cortez 2018-01-31 19:35:26 -03:00
parent 72c99fb876
commit cc8d75a2f5
No known key found for this signature in database
GPG Key ID: 15EDAD8D9F2EB1AF
4 changed files with 103 additions and 18 deletions

View File

@ -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>

View File

@ -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();
}
});
};
} }

View File

@ -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',

View File

@ -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
} }