From 4470461a98c7615398abf7bce612a2f302916592 Mon Sep 17 00:00:00 2001 From: natsoni Date: Wed, 10 Jul 2024 23:22:57 +0900 Subject: [PATCH] Add retry logic to acceleration data fetching on tx page --- .../transaction/transaction.component.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts index acc05a250..487dff698 100644 --- a/frontend/src/app/components/transaction/transaction.component.ts +++ b/frontend/src/app/components/transaction/transaction.component.ts @@ -317,11 +317,19 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy { this.setIsAccelerated(); }), switchMap((blockHeight: number) => { - return this.servicesApiService.getAccelerationHistory$({ blockHeight }); + return this.servicesApiService.getAccelerationHistory$({ blockHeight }).pipe( + switchMap((accelerationHistory: Acceleration[]) => { + if (this.tx.acceleration && !accelerationHistory.length) { // If the just mined transaction was accelerated, but services backend did not return any acceleration data, retry + return throwError('retry'); + } + return of(accelerationHistory); + }), + retry({ count: 3, delay: 2000 }), + catchError(() => { + return of([]); + }) + ); }), - catchError(() => { - return of([]); - }) ).subscribe((accelerationHistory) => { for (const acceleration of accelerationHistory) { if (acceleration.txid === this.txId && (acceleration.status === 'completed' || acceleration.status === 'completed_provisional')) {