UNPKG

copay-crown

Version:

A Secure Crown Wallet

144 lines (123 loc) 4.71 kB
import { Component } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { ModalController, NavController, NavParams } from 'ionic-angular'; import { Logger } from '../../../providers/logger/logger'; // providers import { ExternalLinkProvider } from '../../../providers/external-link/external-link'; import { GlideraProvider } from '../../../providers/glidera/glidera'; import { OnGoingProcessProvider } from '../../../providers/on-going-process/on-going-process'; import { PopupProvider } from '../../../providers/popup/popup'; // pages import { AmountPage } from '../../send/amount/amount'; import { GlideraTxDetailsPage } from './glidera-tx-details/glidera-tx-details'; @Component({ selector: 'page-glidera', templateUrl: 'glidera.html', }) export class GlideraPage { public account: any; public tx: any; public showOauthForm: boolean; public network: string; public currency: string; public oauthCodeForm: FormGroup; constructor( private externalLinkProvider: ExternalLinkProvider, private onGoingProcessProvider: OnGoingProcessProvider, private glideraProvider: GlideraProvider, private popupProvider: PopupProvider, private logger: Logger, private navParams: NavParams, private navCtrl: NavController, private formBuilder: FormBuilder, private modalCtrl: ModalController ) { this.oauthCodeForm = this.formBuilder.group({ code: ['', Validators.compose([Validators.minLength(1), Validators.required])] }); this.network = this.glideraProvider.getNetwork(); this.currency = this.glideraProvider.getCurrency(); this.showOauthForm = false; this.account = {}; } ionViewDidEnter() { if (this.navParams.data && this.navParams.data.code) this.submitOauthCode(this.navParams.data.code); else this.init(); } public openExternalLink(url: string): void { this.externalLinkProvider.open(url); } private init(): void { this.onGoingProcessProvider.set('connectingGlidera'); this.glideraProvider.init((err, data) => { this.onGoingProcessProvider.clear(); if (err) { this.popupProvider.ionicAlert('Error connecting Glidera', err + '. Please re-connect to Glidera'); return; } if (!data || (data && !data.token)) return; this.account.token = data.token; this.account.status = data.status; this.account.txs = data.txs; this.update(); }); } public update(opts?: any): void { this.logger.debug('Updating Glidera...'); this.glideraProvider.updateStatus(this.account); } public getAuthenticateUrl(): string { return this.glideraProvider.getOauthCodeUrl(); } public submitOauthCode(code?: string): void { this.onGoingProcessProvider.set('connectingGlidera'); this.glideraProvider.authorize(code, (err, data) => { this.onGoingProcessProvider.clear(); if (err) { this.popupProvider.ionicAlert('Authorization error', err); return; } this.account.token = data.token; this.account.status = data.status; this.init(); }); }; public openTxModal(tx) { this.tx = tx; let modal = this.modalCtrl.create(GlideraTxDetailsPage, { tx: this.tx }); modal.present(); this.glideraProvider.getTransaction(this.account.token, tx.transactionUuid, (err, tx) => { if (err) { this.popupProvider.ionicAlert('Error getting transaction', 'Could not get transactions'); return; } this.tx = tx; }); } public openAuthenticateWindow(): void { this.openExternalLink(this.getAuthenticateUrl()); this.showOauthForm = true } public openLoginWindow() { let glideraUrl = (this.network === 'testnet') ? 'https://sandbox.glidera.io/login' : 'https://glidera.io/login'; this.openExternalLink(glideraUrl); } public openSupportWindow(): void { var url = this.glideraProvider.getSupportUrl(); var optIn = true; var title = 'Glidera Support'; var message = 'You can email glidera at support@glidera.io for direct support, or you can contact Glidera on Twitter.'; var okText = 'Tweet @GlideraInc'; var cancelText = 'Go Back'; this.externalLinkProvider.open(url, optIn, title, message, okText, cancelText); } public toggleOauthForm(): void { this.showOauthForm = !this.showOauthForm; } public goToBuyGlideraPage(): void { this.navCtrl.push(AmountPage, { nextPage: 'BuyGlideraPage', currency: this.currency, coin: 'btc', fixedUnit: true }); } public goToSellGlideraPage(): void { this.navCtrl.push(AmountPage, { nextPage: 'SellGlideraPage', currency: this.currency, coin: 'btc', fixedUnit: true }) } }