diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index fc97745bf..cac466192 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -4,7 +4,6 @@ import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { PlatformService } from '@ghostfolio/api/app/platform/platform.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; -import { AssetProfileChangedEvent } from '@ghostfolio/api/events/asset-profile-changed.event'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; @@ -29,7 +28,6 @@ import { } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; -import { EventEmitter2 } from '@nestjs/event-emitter'; import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { endOfToday, isAfter, isSameSecond, parseISO } from 'date-fns'; @@ -46,7 +44,6 @@ export class ImportService { private readonly configurationService: ConfigurationService, private readonly dataGatheringService: DataGatheringService, private readonly dataProviderService: DataProviderService, - private readonly eventEmitter: EventEmitter2, private readonly marketDataService: MarketDataService, private readonly orderService: OrderService, private readonly platformService: PlatformService, @@ -608,17 +605,6 @@ export class ImportService { }), priority: DATA_GATHERING_QUEUE_PRIORITY_HIGH }); - - for (const { SymbolProfile } of uniqueActivities) { - this.eventEmitter.emit( - AssetProfileChangedEvent.getName(), - new AssetProfileChangedEvent({ - currency: SymbolProfile.currency, - dataSource: SymbolProfile.dataSource, - symbol: SymbolProfile.symbol - }) - ); - } } return activities; diff --git a/apps/api/src/events/asset-profile-changed.listener.ts b/apps/api/src/events/asset-profile-changed.listener.ts index cc73d0cc4..ad80ee4a5 100644 --- a/apps/api/src/events/asset-profile-changed.listener.ts +++ b/apps/api/src/events/asset-profile-changed.listener.ts @@ -22,53 +22,40 @@ export class AssetProfileChangedListener { @OnEvent(AssetProfileChangedEvent.getName()) public async handleAssetProfileChanged(event: AssetProfileChangedEvent) { - const isEnabled = this.configurationService.get( - 'ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES' - ); - - if (isEnabled === false) { - return; - } - - if (event.data.currency === DEFAULT_CURRENCY) { - return; - } - Logger.log( - `Asset profile changed: ${event.data.symbol} (${event.data.currency})`, + `Asset profile of ${event.data.symbol} (${event.data.dataSource}) has changed`, 'AssetProfileChangedListener' ); - const existingCurrencies = this.exchangeRateDataService.getCurrencies(); - const currencyAlreadyExists = existingCurrencies.includes( - event.data.currency - ); - - if (currencyAlreadyExists) { + if ( + this.configurationService.get( + 'ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES' + ) === false || + event.data.currency === DEFAULT_CURRENCY + ) { return; } - Logger.log( - `New currency detected: ${event.data.currency}`, - 'AssetProfileChangedListener' - ); + const existingCurrencies = this.exchangeRateDataService.getCurrencies(); - await this.exchangeRateDataService.initialize(); + if (!existingCurrencies.includes(event.data.currency)) { + Logger.log( + `New currency ${event.data.currency} has been detected`, + 'AssetProfileChangedListener' + ); + + await this.exchangeRateDataService.initialize(); + } const { dateOfFirstActivity } = await this.orderService.getStatisticsByCurrency(event.data.currency); - const startDate = dateOfFirstActivity ?? new Date(); - - Logger.log( - `Triggering exchange rate data gathering for ${DEFAULT_CURRENCY}${event.data.currency} from ${startDate.toISOString()}.`, - 'AssetProfileChangedListener' - ); - - await this.dataGatheringService.gatherSymbol({ - dataSource: this.dataProviderService.getDataSourceForExchangeRates(), - symbol: `${DEFAULT_CURRENCY}${event.data.currency}`, - date: startDate - }); + if (dateOfFirstActivity) { + await this.dataGatheringService.gatherSymbol({ + dataSource: this.dataProviderService.getDataSourceForExchangeRates(), + date: dateOfFirstActivity, + symbol: `${DEFAULT_CURRENCY}${event.data.currency}` + }); + } } }