Browse Source

fix(benchmark): resolve stuck loading state in detail dialog on fetch error

When the market data API call failed for an ETF watchlist item,
the isLoading flag was never set to false because the subscribe()
call had no error handler. The loading spinner remained indefinitely.

Added an error callback that clears historicalDataItems, sets
isLoading to false, and triggers change detection so the dialog
renders an empty state instead of freezing.

Fixes #7560
pull/7798/head
Shreya 7 days ago
parent
commit
4553254134
  1. 40
      libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts

40
libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts

@ -64,26 +64,34 @@ export class GfBenchmarkDetailDialogComponent implements OnInit {
symbol: this.data.symbol symbol: this.data.symbol
}) })
.pipe(takeUntilDestroyed(this.destroyRef)) .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ assetProfile, marketData }) => { .subscribe({
this.assetProfile = assetProfile; next: ({ assetProfile, marketData }) => {
this.assetProfile = assetProfile;
this.historicalDataItems = marketData.map( this.historicalDataItems = marketData.map(
({ date, marketPrice }, index) => { ({ date, marketPrice }, index) => {
if (marketData.length - 1 === index) { if (marketData.length - 1 === index) {
this.value = marketPrice; this.value = marketPrice;
} }
return { return {
date: format(date, DATE_FORMAT), date: format(date, DATE_FORMAT),
value: marketPrice value: marketPrice
}; };
} }
); );
this.isLoading = false; this.isLoading = false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); },
error: () => {
this.historicalDataItems = [];
this.isLoading = false;
this.changeDetectorRef.markForCheck();
}
});
} }
public onClose() { public onClose() {

Loading…
Cancel
Save