Fix unnecessary cpfp 404 responses
This commit is contained in:
		
							parent
							
								
									5a09e3099c
								
							
						
					
					
						commit
						182cb16695
					
				@ -220,18 +220,17 @@ class BitcoinRoutes {
 | 
			
		||||
      let cpfpInfo;
 | 
			
		||||
      if (config.DATABASE.ENABLED) {
 | 
			
		||||
        cpfpInfo = await transactionRepository.$getCpfpInfo(req.params.txId);
 | 
			
		||||
      }
 | 
			
		||||
      if (cpfpInfo) {
 | 
			
		||||
        res.json(cpfpInfo);
 | 
			
		||||
        return;
 | 
			
		||||
      } else {
 | 
			
		||||
        res.json({
 | 
			
		||||
          ancestors: []
 | 
			
		||||
        });
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (cpfpInfo) {
 | 
			
		||||
        res.json(cpfpInfo);
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    res.status(404).send(`Transaction has no CPFP info available.`);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private getBackendInfo(req: Request, res: Response) {
 | 
			
		||||
@ -652,7 +651,7 @@ class BitcoinRoutes {
 | 
			
		||||
      if (result) {
 | 
			
		||||
        res.json(result);
 | 
			
		||||
      } else {
 | 
			
		||||
        res.status(404).send('not found');
 | 
			
		||||
        res.status(204).send();
 | 
			
		||||
      }
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      res.status(500).send(e instanceof Error ? e.message : e);
 | 
			
		||||
 | 
			
		||||
@ -263,7 +263,7 @@ class MiningRoutes {
 | 
			
		||||
      const audit = await BlocksAuditsRepository.$getBlockAudit(req.params.hash);
 | 
			
		||||
 | 
			
		||||
      if (!audit) {
 | 
			
		||||
        res.status(404).send(`This block has not been audited.`);
 | 
			
		||||
        res.status(204).send(`This block has not been audited.`);
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -210,6 +210,7 @@
 | 
			
		||||
        <div class="graph-container" #graphContainer>
 | 
			
		||||
          <tx-bowtie-graph
 | 
			
		||||
            [tx]="tx"
 | 
			
		||||
            [cached]="isCached"
 | 
			
		||||
            [width]="graphWidth"
 | 
			
		||||
            [height]="graphHeight"
 | 
			
		||||
            [lineLimit]="inOutLimit"
 | 
			
		||||
@ -250,7 +251,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <app-transactions-list #txList [transactions]="[tx]" [errorUnblinded]="errorUnblinded" [inputIndex]="inputIndex" [outputIndex]="outputIndex" [transactionPage]="true"></app-transactions-list>
 | 
			
		||||
    <app-transactions-list #txList [transactions]="[tx]" [cached]="isCached" [errorUnblinded]="errorUnblinded" [inputIndex]="inputIndex" [outputIndex]="outputIndex" [transactionPage]="true"></app-transactions-list>
 | 
			
		||||
 | 
			
		||||
    <div class="title text-left">
 | 
			
		||||
      <h2 i18n="transaction.details">Details</h2>
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
 | 
			
		||||
  fetchCpfp$ = new Subject<string>();
 | 
			
		||||
  fetchRbfHistory$ = new Subject<string>();
 | 
			
		||||
  fetchCachedTx$ = new Subject<string>();
 | 
			
		||||
  isCached: boolean = false;
 | 
			
		||||
  now = new Date().getTime();
 | 
			
		||||
  timeAvg$: Observable<number>;
 | 
			
		||||
  liquidUnblinding = new LiquidUnblinding();
 | 
			
		||||
@ -196,6 +197,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.tx = tx;
 | 
			
		||||
      this.isCached = true;
 | 
			
		||||
      if (tx.fee === undefined) {
 | 
			
		||||
        this.tx.fee = 0;
 | 
			
		||||
      }
 | 
			
		||||
@ -289,6 +291,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.tx = tx;
 | 
			
		||||
          this.isCached = false;
 | 
			
		||||
          if (tx.fee === undefined) {
 | 
			
		||||
            this.tx.fee = 0;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
import { Component, OnInit, Input, ChangeDetectionStrategy, OnChanges, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
 | 
			
		||||
import { StateService } from '../../services/state.service';
 | 
			
		||||
import { CacheService } from '../../services/cache.service';
 | 
			
		||||
import { Observable, ReplaySubject, BehaviorSubject, merge, Subscription } from 'rxjs';
 | 
			
		||||
import { Observable, ReplaySubject, BehaviorSubject, merge, Subscription, of } from 'rxjs';
 | 
			
		||||
import { Outspend, Transaction, Vin, Vout } from '../../interfaces/electrs.interface';
 | 
			
		||||
import { ElectrsApiService } from '../../services/electrs-api.service';
 | 
			
		||||
import { environment } from '../../../environments/environment';
 | 
			
		||||
@ -23,6 +23,7 @@ export class TransactionsListComponent implements OnInit, OnChanges {
 | 
			
		||||
  showMoreIncrement = 1000;
 | 
			
		||||
 | 
			
		||||
  @Input() transactions: Transaction[];
 | 
			
		||||
  @Input() cached: boolean = false;
 | 
			
		||||
  @Input() showConfirmations = false;
 | 
			
		||||
  @Input() transactionPage = false;
 | 
			
		||||
  @Input() errorUnblinded = false;
 | 
			
		||||
@ -67,7 +68,13 @@ export class TransactionsListComponent implements OnInit, OnChanges {
 | 
			
		||||
    this.outspendsSubscription = merge(
 | 
			
		||||
      this.refreshOutspends$
 | 
			
		||||
        .pipe(
 | 
			
		||||
          switchMap((txIds) => this.apiService.getOutspendsBatched$(txIds)),
 | 
			
		||||
          switchMap((txIds) => {
 | 
			
		||||
            if (!this.cached) {
 | 
			
		||||
              return this.apiService.getOutspendsBatched$(txIds);
 | 
			
		||||
            } else {
 | 
			
		||||
              return of([]);
 | 
			
		||||
            }
 | 
			
		||||
          }),
 | 
			
		||||
          tap((outspends: Outspend[][]) => {
 | 
			
		||||
            if (!this.transactions) {
 | 
			
		||||
              return;
 | 
			
		||||
@ -155,7 +162,7 @@ export class TransactionsListComponent implements OnInit, OnChanges {
 | 
			
		||||
        ).subscribe();
 | 
			
		||||
      });
 | 
			
		||||
      const txIds = this.transactions.filter((tx) => !tx._outspends).map((tx) => tx.txid);
 | 
			
		||||
      if (txIds.length) {
 | 
			
		||||
      if (txIds.length && !this.cached) {
 | 
			
		||||
        this.refreshOutspends$.next(txIds);
 | 
			
		||||
      }
 | 
			
		||||
      if (this.stateService.env.LIGHTNING) {
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@ import { Component, OnInit, Input, OnChanges, HostListener, Inject, LOCALE_ID }
 | 
			
		||||
import { StateService } from '../../services/state.service';
 | 
			
		||||
import { Outspend, Transaction } from '../../interfaces/electrs.interface';
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
import { ReplaySubject, merge, Subscription } from 'rxjs';
 | 
			
		||||
import { ReplaySubject, merge, Subscription, of } from 'rxjs';
 | 
			
		||||
import { tap, switchMap } from 'rxjs/operators';
 | 
			
		||||
import { ApiService } from '../../services/api.service';
 | 
			
		||||
import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe';
 | 
			
		||||
@ -40,6 +40,7 @@ interface Xput {
 | 
			
		||||
export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
  @Input() tx: Transaction;
 | 
			
		||||
  @Input() network: string;
 | 
			
		||||
  @Input() cached: boolean = false;
 | 
			
		||||
  @Input() width = 1200;
 | 
			
		||||
  @Input() height = 600;
 | 
			
		||||
  @Input() lineLimit = 250;
 | 
			
		||||
@ -107,7 +108,13 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
    this.outspendsSubscription = merge(
 | 
			
		||||
      this.refreshOutspends$
 | 
			
		||||
        .pipe(
 | 
			
		||||
          switchMap((txid) => this.apiService.getOutspendsBatched$([txid])),
 | 
			
		||||
          switchMap((txid) => {
 | 
			
		||||
            if (!this.cached) {
 | 
			
		||||
              return this.apiService.getOutspendsBatched$([txid]);
 | 
			
		||||
            } else {
 | 
			
		||||
              return of(null);
 | 
			
		||||
            }
 | 
			
		||||
          }),
 | 
			
		||||
          tap((outspends: Outspend[][]) => {
 | 
			
		||||
            if (!this.tx || !outspends || !outspends.length) {
 | 
			
		||||
              return;
 | 
			
		||||
@ -132,7 +139,9 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
 | 
			
		||||
  ngOnChanges(): void {
 | 
			
		||||
    this.initGraph();
 | 
			
		||||
    this.refreshOutspends$.next(this.tx.txid);
 | 
			
		||||
    if (!this.cached) {
 | 
			
		||||
      this.refreshOutspends$.next(this.tx.txid);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  initGraph(): void {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user