diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts index bdaecf718..97ca86a42 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts @@ -294,9 +294,14 @@ export class GhostfolioService { ); } - const searchResults = await Promise.all(promises); + const searchResults = await Promise.allSettled(promises); - for (const { items } of searchResults) { + for (const result of searchResults) { + if (result.status === 'rejected') { + Logger.warn(result.reason, 'GhostfolioService'); + continue; + } + const { items } = result.value; if (items?.length > 0) { lookupItems = lookupItems.concat(items); } diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index 94a466742..4e837fbe5 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -102,6 +102,9 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { yahooSymbol = symbol; } else { const { quotes } = await this.yahooFinance.search(response.isin); + if (quotes.length === 0) { + return response; + } yahooSymbol = quotes[0].symbol as string; } diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 606da5b88..caccda27b 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -650,9 +650,14 @@ export class DataProviderService implements OnModuleInit { ); } - const searchResults = await Promise.all(promises); + const searchResults = await Promise.allSettled(promises); - for (const { items } of searchResults) { + for (const result of searchResults) { + if (result.status === 'rejected') { + Logger.warn(result.reason, 'DataProviderService'); + continue; + } + const { items } = result.value; if (items?.length > 0) { lookupItems = lookupItems.concat(items); } 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 06e4674fb..d4bc6f252 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 @@ -331,6 +331,7 @@ export class YahooFinanceService implements DataProviderInterface { } } catch (error) { Logger.error(error, 'YahooFinanceService'); + return { items: [] }; } return { items };