diff --git a/frontend/src/app/components/address-graph/address-graph.component.ts b/frontend/src/app/components/address-graph/address-graph.component.ts index 1f41def71..ab137e52b 100644 --- a/frontend/src/app/components/address-graph/address-graph.component.ts +++ b/frontend/src/app/components/address-graph/address-graph.component.ts @@ -22,6 +22,7 @@ import { AmountShortenerPipe } from '../../shared/pipes/amount-shortener.pipe'; }) export class AddressGraphComponent implements OnInit, OnChanges { @Input() address: string; + @Input() isPubkey: boolean = false; @Input() stats: ChainStats; @Input() right: number | string = 10; @Input() left: number | string = 70; @@ -49,7 +50,9 @@ export class AddressGraphComponent implements OnInit, OnChanges { ngOnChanges(changes: SimpleChanges): void { this.isLoading = true; - this.electrsApiService.getAddressSummary$(this.address).pipe( + (this.isPubkey + ? this.electrsApiService.getScriptHashSummary$((this.address.length === 66 ? '21' : '41') + this.address + 'ac') + : this.electrsApiService.getAddressSummary$(this.address)).pipe( catchError(e => { this.error = `Failed to fetch address balance history: ${e?.status || ''} ${e?.statusText || 'unknown error'}`; return of(null); diff --git a/frontend/src/app/components/address/address.component.html b/frontend/src/app/components/address/address.component.html index 9db4004e9..41a9c3061 100644 --- a/frontend/src/app/components/address/address.component.html +++ b/frontend/src/app/components/address/address.component.html @@ -56,7 +56,7 @@
- +
diff --git a/frontend/src/app/services/electrs-api.service.ts b/frontend/src/app/services/electrs-api.service.ts index c1dbe0b65..748194a21 100644 --- a/frontend/src/app/services/electrs-api.service.ts +++ b/frontend/src/app/services/electrs-api.service.ts @@ -159,6 +159,16 @@ export class ElectrsApiService { ); } + getScriptHashSummary$(script: string, txid?: string): Observable { + let params = new HttpParams(); + if (txid) { + params = params.append('after_txid', txid); + } + return from(calcScriptHash$(script)).pipe( + switchMap(scriptHash => this.httpClient.get(this.apiBaseUrl + this.apiBasePath + '/api/scripthash/' + scriptHash + '/txs/summary', { params })), + ); + } + getAsset$(assetId: string): Observable { return this.httpClient.get(this.apiBaseUrl + this.apiBasePath + '/api/asset/' + assetId); }