mirror of
https://github.com/mempool/mempool.git
synced 2025-03-01 01:00:00 +01:00
59 lines
2 KiB
TypeScript
59 lines
2 KiB
TypeScript
import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';
|
|
import { combineLatest, Observable } from 'rxjs';
|
|
import { map } from 'rxjs/operators';
|
|
import { moveDec } from '../../bitcoin.utils';
|
|
import { AssetsService } from '../../services/assets.service';
|
|
import { ElectrsApiService } from '../../services/electrs-api.service';
|
|
import { environment } from '../../../environments/environment';
|
|
|
|
@Component({
|
|
selector: 'app-asset-circulation',
|
|
templateUrl: './asset-circulation.component.html',
|
|
styleUrls: ['./asset-circulation.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class AssetCirculationComponent implements OnInit {
|
|
@Input() assetId: string;
|
|
|
|
circulatingAmount$: Observable<{ amount: number, ticker: string}>;
|
|
|
|
constructor(
|
|
private electrsApiService: ElectrsApiService,
|
|
private assetsService: AssetsService,
|
|
@Inject(LOCALE_ID) private locale: string,
|
|
) { }
|
|
|
|
ngOnInit(): void {
|
|
this.circulatingAmount$ = combineLatest([
|
|
this.electrsApiService.getAsset$(this.assetId),
|
|
this.assetsService.getAssetsMinimalJson$]
|
|
)
|
|
.pipe(
|
|
map(([asset, assetsMinimal]) => {
|
|
const assetData = assetsMinimal[asset.asset_id];
|
|
if (!asset.chain_stats.has_blinded_issuances) {
|
|
if (asset.asset_id === environment.nativeAssetId) {
|
|
return {
|
|
amount: this.formatAmount(asset.chain_stats.peg_in_amount - asset.chain_stats.burned_amount - asset.chain_stats.peg_out_amount, assetData[3]),
|
|
ticker: assetData[1]
|
|
};
|
|
} else {
|
|
return {
|
|
amount: this.formatAmount(asset.chain_stats.issued_amount - asset.chain_stats.burned_amount, assetData[3]),
|
|
ticker: assetData[1]
|
|
};
|
|
}
|
|
} else {
|
|
return {
|
|
amount: -1,
|
|
ticker: '',
|
|
};
|
|
}
|
|
}),
|
|
);
|
|
}
|
|
|
|
formatAmount(value: number, precision = 0): number {
|
|
return parseFloat(moveDec(value, -precision));
|
|
}
|
|
}
|