From 177ddcbb73ce507750ffdb4e60679421df34373f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 13 Sep 2025 16:53:13 +0200 Subject: [PATCH] Refactoring --- .../yahoo-finance/yahoo-finance.service.ts | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 40298de15..6ad7fe02d 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -35,6 +35,10 @@ import { Quote, QuoteResponseArray } from 'yahoo-finance2/esm/src/modules/quote'; +import { + Price, + QuoteSummaryResult +} from 'yahoo-finance2/esm/src/modules/quoteSummary'; import { SearchQuoteNonYahoo } from 'yahoo-finance2/esm/src/modules/search'; @Injectable() @@ -191,10 +195,7 @@ export class YahooFinanceService implements DataProviderInterface { ); try { - let quotes: Pick< - Quote, - 'currency' | 'marketState' | 'regularMarketPrice' | 'symbol' - >[] = []; + let quotes: Price[] | Quote[] = []; try { quotes = await this.yahooFinance.quote(yahooFinanceSymbols); @@ -357,23 +358,28 @@ export class YahooFinanceService implements DataProviderInterface { private async getQuotesWithQuoteSummary(aYahooFinanceSymbols: string[]) { const quoteSummaryPromises = aYahooFinanceSymbols.map((symbol) => { - return this.yahooFinance.quoteSummary(symbol).catch(() => { - Logger.error( - `Could not get quote summary for ${symbol}`, - 'YahooFinanceService' - ); - return null; - }); + return this.yahooFinance.quoteSummary(symbol); }); - const quoteSummaryItems = await Promise.all(quoteSummaryPromises); + const settledResults = await Promise.allSettled(quoteSummaryPromises); + + return settledResults + .filter( + (result): result is PromiseFulfilledResult => { + if (result.status === 'rejected') { + Logger.error( + `Could not get quote summary for symbol: ${result.reason}`, + 'YahooFinanceService' + ); - return quoteSummaryItems - .filter((item) => { - return item !== null; - }) - .map(({ price }) => { - return price; + return false; + } + + return true; + } + ) + .map(({ value }) => { + return value.price; }); } }