diff --git a/CHANGELOG.md b/CHANGELOG.md index 97e1c74ce..559748b1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the data source validation in the activities import - Improved the language localization for German (`de`) - Upgraded `ng-extract-i18n-merge` from version `2.7.0` to `2.8.3` - Upgraded `prettier` from version `3.0.3` to `3.1.0` diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 96cceff54..eb556421d 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -8,6 +8,7 @@ import { 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 { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/data-gathering.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; @@ -33,6 +34,7 @@ import { v4 as uuidv4 } from 'uuid'; export class ImportService { public constructor( private readonly accountService: AccountService, + private readonly configurationService: ConfigurationService, private readonly dataGatheringService: DataGatheringService, private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, @@ -570,6 +572,12 @@ export class ImportService { index, { currency, dataSource, symbol } ] of uniqueActivitiesDto.entries()) { + if (!this.configurationService.get('DATA_SOURCES').includes(dataSource)) { + throw new Error( + `activities.${index}.dataSource ("${dataSource}") is not valid` + ); + } + if (dataSource !== 'MANUAL') { const assetProfile = ( await this.dataProviderService.getAssetProfiles([