UNPKG

copay-crown

Version:

A Secure Crown Wallet

121 lines (103 loc) 3.98 kB
import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { Logger } from '../../../providers/logger/logger'; // Providers import { ConfigProvider } from '../../../providers/config/config'; import { PersistenceProvider } from '../../../providers/persistence/persistence'; import { ProfileProvider } from '../../../providers/profile/profile'; import { RateProvider } from '../../../providers/rate/rate'; import { WalletProvider } from '../../../providers/wallet/wallet'; import * as _ from 'lodash'; @Component({ selector: 'page-alt-currency', templateUrl: 'alt-currency.html', }) export class AltCurrencyPage { public completeAlternativeList: any[]; public searchedAltCurrency: string; public altCurrencyList: any[]; public loading: any; public currentCurrency: any; public lastUsedAltCurrencyList: any[]; private PAGE_COUNTER: number = 3; private SHOW_LIMIT: number = 10; private unusedCurrencyList: any; constructor( private configProvider: ConfigProvider, private logger: Logger, private navCtrl: NavController, private rate: RateProvider, private profileProvider: ProfileProvider, private persistenceProvider: PersistenceProvider, private walletProvider: WalletProvider ) { this.completeAlternativeList = []; this.altCurrencyList = []; this.unusedCurrencyList = [{ isoCode: 'LTL' }, { isoCode: 'BTC' }]; } ionViewWillEnter() { this.rate.whenRatesAvailable().then((data) => { this.completeAlternativeList = this.rate.listAlternatives(true); let idx = _.keyBy(this.unusedCurrencyList, 'isoCode'); let idx2 = _.keyBy(this.lastUsedAltCurrencyList, 'isoCode'); this.completeAlternativeList = _.reject(this.completeAlternativeList, (c: any) => { return idx[c.isoCode] || idx2[c.isoCode]; }); this.altCurrencyList = this.completeAlternativeList.slice(0, 20); }).catch((err: any) => { this.logger.error(err); }); let config = this.configProvider.get(); this.currentCurrency = config.wallet.settings.alternativeIsoCode; this.persistenceProvider.getLastCurrencyUsed().then((lastUsedAltCurrency: any) => { this.lastUsedAltCurrencyList = lastUsedAltCurrency ? lastUsedAltCurrency : []; }).catch((err: any) => { this.logger.error(err); }); } public loadAltCurrencies(loading: any): void { if (this.altCurrencyList.length === this.completeAlternativeList.length) { loading.complete(); return; } setTimeout(() => { this.altCurrencyList = this.completeAlternativeList.slice(0, this.PAGE_COUNTER * this.SHOW_LIMIT); this.PAGE_COUNTER++; loading.complete(); }, 300); } ionViewDidLoad() { this.logger.info('ionViewDidLoad AltCurrencyPage'); } public save(newAltCurrency: any): void { var opts = { wallet: { settings: { alternativeName: newAltCurrency.name, alternativeIsoCode: newAltCurrency.isoCode, } } }; this.configProvider.set(opts); this.saveLastUsed(newAltCurrency); this.walletProvider.updateRemotePreferences(this.profileProvider.getWallets()); this.navCtrl.pop(); } private saveLastUsed(newAltCurrency: any): void { this.lastUsedAltCurrencyList.unshift(newAltCurrency); this.lastUsedAltCurrencyList = _.uniqBy(this.lastUsedAltCurrencyList, 'isoCode'); this.lastUsedAltCurrencyList = this.lastUsedAltCurrencyList.slice(0, 3); this.persistenceProvider.setLastCurrencyUsed(JSON.stringify(this.lastUsedAltCurrencyList)).then(() => { }); } public findCurrency(searchedAltCurrency: string): void { this.altCurrencyList = _.filter(this.completeAlternativeList, (item) => { var val = item.name var val2 = item.isoCode; return _.includes(val.toLowerCase(), searchedAltCurrency.toLowerCase()) || _.includes(val2.toLowerCase(), searchedAltCurrency.toLowerCase()); }) } }