UNPKG

insight-previous-tcr

Version:

A blockchain explorer for Bitcore

94 lines (82 loc) 2.68 kB
import { Component, Injectable } from "@angular/core"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { IonicPage, NavParams } from "ionic-angular"; import { ApiProvider, ChainNetwork } from "../../providers/api/api"; import { CurrencyProvider } from "../../providers/currency/currency"; import { PriceProvider } from "../../providers/price/price"; import * as bitcoreLib from "@tecracoin/bitcore-lib"; import * as bitcoreLibCash from "@tecracoin/bitcore-lib-cash"; // import * as bitcoreLibTcr from "@tecracoin/bitcore-lib-tcr"; @Injectable() @IonicPage({ name: 'messages', segment: ':chain/:network/verify-message', defaultHistory: ['home'] }) @Component({ selector: 'page-messages', templateUrl: 'messages.html' }) export class MessagesPage { public messageForm: FormGroup; public error: string; public success: string; private chainNetwork: ChainNetwork; constructor( public formBuilder: FormBuilder, public navParams: NavParams, private apiProvider: ApiProvider, private priceProvider: PriceProvider, private currencyProvider: CurrencyProvider ) { const chain: string = navParams.get('chain'); const network: string = navParams.get('network'); this.chainNetwork = { chain, network }; this.apiProvider.changeNetwork(this.chainNetwork); this.currencyProvider.setCurrency(this.chainNetwork); this.priceProvider.setCurrency(); this.messageForm = formBuilder.group({ address: [ '', Validators.compose([Validators.minLength(1), Validators.required]) ], signature: [ '', Validators.compose([Validators.minLength(1), Validators.required]) ], message: [ '', Validators.compose([Validators.minLength(1), Validators.required]) ] }); } public verify(): void { this.success = this.error = null; const values = this.messageForm.value; if (!this.isAddressValid(values.address)) { this.error = 'Invalid Address'; return; } const bitcore = {BTC: bitcoreLib, BCH: bitcoreLibCash,TCR: bitcoreLib}[this.chainNetwork.chain]; const message = new bitcore.Message(values.message); try { if (message.verify(values.address, values.signature)) { this.success = 'Message verified!'; } else { this.error = message.error; } } catch (e) { this.error = e; } } private isAddressValid(addr): boolean { const bitcore = this.chainNetwork.chain === 'BTC' ? bitcoreLib : bitcoreLibCash; return !!bitcore.Address.isValid(addr, this.chainNetwork.network) ? true : false; } }