UNPKG

copay-crown

Version:

A Secure Crown Wallet

102 lines (84 loc) 3.02 kB
import { Component } from '@angular/core'; import { Events, ModalController, NavController } from 'ionic-angular'; import * as _ from 'lodash'; import { Logger } from '../../../providers/logger/logger'; // Pages import { ShapeshiftDetailsPage } from './shapeshift-details/shapeshift-details'; import { ShapeshiftShiftPage } from './shapeshift-shift/shapeshift-shift'; // Providers import { ExternalLinkProvider } from '../../../providers/external-link/external-link'; import { ShapeshiftProvider } from '../../../providers/shapeshift/shapeshift'; @Component({ selector: 'page-shapeshift', templateUrl: 'shapeshift.html', }) export class ShapeshiftPage { public shifts: any; public network: string; constructor( private events: Events, private externalLinkProvider: ExternalLinkProvider, private logger: Logger, private modalCtrl: ModalController, private navCtrl: NavController, private shapeshiftProvider: ShapeshiftProvider ) { this.network = this.shapeshiftProvider.getNetwork(); this.shifts = { data: {} }; this.init(); } ionViewDidLoad() { this.logger.info('ionViewDidLoad ShapeshiftPage'); } ionViewWillEnter() { this.events.subscribe('bwsEvent', (walletId: string, type: string, n: any) => { if (type == 'NewBlock') this.updateShift(this.shifts); }); } public openExternalLink(url: string): void { this.externalLinkProvider.open(url); } private updateShift = _.debounce((shifts: any) => { if (_.isEmpty(shifts.data)) return; _.forEach(shifts.data, (dataFromStorage: any) => { this.shapeshiftProvider.getStatus(dataFromStorage.address, (err: any, st: any) => { if (err) return; this.shifts.data[st.address].status = st.status; this.shifts.data[st.address].transaction = st.transaction || null; this.shifts.data[st.address].incomingCoin = st.incomingCoin || null; this.shifts.data[st.address].incomingType = st.incomingType || null; this.shifts.data[st.address].outgoingCoin = st.outgoingCoin || null; this.shifts.data[st.address].outgoingType = st.outgoingType || null; this.shapeshiftProvider.saveShapeshift(this.shifts.data[st.address], null, (err: any) => { this.logger.debug("Saved shift with status: " + st.status); }); }); }); }, 1000, { 'leading': true }); private init(): void { this.shapeshiftProvider.getShapeshift((err: any, ss: any) => { if (err) this.logger.error(err); this.shifts = { data: ss }; this.updateShift(this.shifts); }); } public update(): void { this.updateShift(this.shifts); } public openShiftModal(ssData: any) { let modal = this.modalCtrl.create(ShapeshiftDetailsPage, { ssData }); modal.present(); modal.onDidDismiss((data) => { this.init(); }); } public goTo(page: string): void { switch (page) { case 'Shift': this.navCtrl.push(ShapeshiftShiftPage); break; } } }