insight-previous-tcr
Version:
A blockchain explorer for Bitcore
94 lines (82 loc) • 2.68 kB
text/typescript
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";
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;
}
}