insight-previous-tcr
Version:
A blockchain explorer for Bitcore
67 lines (60 loc) • 1.87 kB
text/typescript
import { Component, Input, OnInit } from "@angular/core";
import { Events } from "ionic-angular";
import _ from "lodash";
import { AddressProvider } from "../../providers/address/address";
import { ChainNetwork } from "../../providers/api/api";
import { Logger } from "../../providers/logger/logger";
import { TxsProvider } from "../../providers/transactions/transactions";
export class CoinListComponent implements OnInit {
public addrStr?: string;
public chainNetwork: ChainNetwork;
public txs: any = [];
public coins: any = [];
public showTransactions: boolean;
public loading;
public limit = 10;
public chunkSize = 100;
constructor(
private addrProvider: AddressProvider,
private txsProvider: TxsProvider,
private events: Events
) {}
public ngOnInit(): void {
if (this.txs && this.txs.length === 0) {
this.loading = true;
this.addrProvider.getAddressActivity(this.addrStr).subscribe(
data => {
const formattedData = data.map(this.txsProvider.toAppCoin);
this.txs = this.processData(formattedData);
this.showTransactions = true;
this.loading = false;
this.events.publish('CoinList', { length: data.length });
},
() => {
this.loading = false;
this.showTransactions = false;
}
);
}
}
processData(data) {
const txs = [];
data.forEach(tx => {
const { mintHeight, mintTxid, value, spentHeight, spentTxid } = tx;
txs.push({ height: spentHeight, spentTxid, value });
txs.push({ height: mintHeight, mintTxid, value });
});
return txs;
}
public loadMore(infiniteScroll) {
this.limit += this.chunkSize;
this.chunkSize *= 2;
infiniteScroll.complete();
}
}