Browse Source
Merge branch 'main' into task/extract-account-selector-to-reusable-component
pull/7653/head
Thomas Kaul
12 hours ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with
39 additions and
13 deletions
-
CHANGELOG.md
-
apps/api/src/helper/country.helper.ts
-
apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts
-
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts
-
apps/api/src/services/data-provider/data-provider.service.ts
-
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
-
libs/common/src/lib/helper.ts
|
|
|
@ -9,9 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 |
|
|
|
|
|
|
|
### Changed |
|
|
|
|
|
|
|
- Moved the improved symbol lookup results by removing the currency from the name of cryptocurrencies from experimental to general availability |
|
|
|
- Extracted the account selector to a reusable component |
|
|
|
- Upgraded `ng-extract-i18n-merge` from `3.3.0` to `3.4.0` |
|
|
|
|
|
|
|
### Fixed |
|
|
|
|
|
|
|
- Fixed the missing mapping for Macau in the data enhancer for asset profile data via _Trackinsight_ |
|
|
|
|
|
|
|
## 3.53.0 - 2026-08-16 |
|
|
|
|
|
|
|
### Changed |
|
|
|
|
|
|
|
@ -3,9 +3,11 @@ import { countries } from 'countries-list'; |
|
|
|
|
|
|
|
export function getCountryCodeByName({ |
|
|
|
aliases = {}, |
|
|
|
dataSource, |
|
|
|
name |
|
|
|
}: { |
|
|
|
aliases?: Record<string, string>; |
|
|
|
dataSource?: string; |
|
|
|
name: string; |
|
|
|
}): string { |
|
|
|
if (aliases[name]) { |
|
|
|
@ -21,7 +23,11 @@ export function getCountryCodeByName({ |
|
|
|
if (name && name.toLowerCase() !== 'other') { |
|
|
|
const logger = new Logger('getCountryCodeByName'); |
|
|
|
|
|
|
|
logger.warn(`Could not map the country "${name}" to a code`); |
|
|
|
logger.warn( |
|
|
|
`Could not map the country "${name}" to a code${ |
|
|
|
dataSource ? ` (${dataSource})` : '' |
|
|
|
}` |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
return undefined; |
|
|
|
|
|
|
|
@ -17,6 +17,7 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { |
|
|
|
|
|
|
|
private static countriesMapping = { |
|
|
|
'Czech Republic': 'CZ', |
|
|
|
Macau: 'MO', |
|
|
|
'Republic of Korea': 'KR', |
|
|
|
'Russian Federation': 'RU', |
|
|
|
Turkey: 'TR', |
|
|
|
@ -128,7 +129,8 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { |
|
|
|
)) { |
|
|
|
const code = getCountryCodeByName({ |
|
|
|
name, |
|
|
|
aliases: TrackinsightDataEnhancerService.countriesMapping |
|
|
|
aliases: TrackinsightDataEnhancerService.countriesMapping, |
|
|
|
dataSource: this.getName() |
|
|
|
}); |
|
|
|
|
|
|
|
if (code) { |
|
|
|
|
|
|
|
@ -254,6 +254,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { |
|
|
|
|
|
|
|
const code = getCountryCodeByName({ |
|
|
|
aliases: YahooFinanceDataEnhancerService.countriesMapping, |
|
|
|
dataSource: this.getName(), |
|
|
|
name: assetProfile.summaryProfile.country |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
@ -17,6 +17,7 @@ import { CreateOrderDto } from '@ghostfolio/common/dtos'; |
|
|
|
import { SubscriptionType } from '@ghostfolio/common/enums'; |
|
|
|
import { |
|
|
|
DATE_FORMAT, |
|
|
|
formatAssetProfileName, |
|
|
|
getAssetProfileIdentifier, |
|
|
|
getCurrencyFromSymbol, |
|
|
|
getStartOfUtcDate, |
|
|
|
@ -125,7 +126,11 @@ export class DataProviderService implements OnModuleInit { |
|
|
|
symbol, |
|
|
|
dataSource: DataSource[dataSource] |
|
|
|
}) |
|
|
|
] = { ...assetProfile, symbol }; |
|
|
|
] = { |
|
|
|
...assetProfile, |
|
|
|
symbol, |
|
|
|
name: formatAssetProfileName(assetProfile) |
|
|
|
}; |
|
|
|
} |
|
|
|
}) |
|
|
|
); |
|
|
|
@ -897,16 +902,7 @@ export class DataProviderService implements OnModuleInit { |
|
|
|
lookupItem.dataProviderInfo.isPremium = false; |
|
|
|
} |
|
|
|
|
|
|
|
if ( |
|
|
|
lookupItem.assetSubClass === 'CRYPTOCURRENCY' && |
|
|
|
user?.settings?.settings.isExperimentalFeatures |
|
|
|
) { |
|
|
|
// Remove DEFAULT_CURRENCY at the end of cryptocurrency names
|
|
|
|
lookupItem.name = lookupItem.name.replace( |
|
|
|
new RegExp(` ${DEFAULT_CURRENCY}$`), |
|
|
|
'' |
|
|
|
); |
|
|
|
} |
|
|
|
lookupItem.name = formatAssetProfileName(lookupItem); |
|
|
|
|
|
|
|
return lookupItem; |
|
|
|
}) |
|
|
|
|
|
|
|
@ -175,6 +175,7 @@ export class FinancialModelingPrepService |
|
|
|
return { |
|
|
|
code: getCountryCodeByName({ |
|
|
|
aliases: FinancialModelingPrepService.countriesMapping, |
|
|
|
dataSource: this.getName(), |
|
|
|
name: countryName |
|
|
|
}), |
|
|
|
weight: parseFloat(`${weightPercentage}`) / 100 |
|
|
|
|
|
|
|
@ -261,6 +261,21 @@ export function extractNumberFromString({ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
export function formatAssetProfileName({ |
|
|
|
assetSubClass, |
|
|
|
name |
|
|
|
}: { |
|
|
|
assetSubClass?: AssetSubClass; |
|
|
|
name?: string; |
|
|
|
}) { |
|
|
|
if (assetSubClass === 'CRYPTOCURRENCY') { |
|
|
|
// Remove DEFAULT_CURRENCY at the end of cryptocurrency names
|
|
|
|
return name?.replace(new RegExp(` ${DEFAULT_CURRENCY}$`), ''); |
|
|
|
} |
|
|
|
|
|
|
|
return name; |
|
|
|
} |
|
|
|
|
|
|
|
export function formatMonthAndYear({ |
|
|
|
date, |
|
|
|
locale |
|
|
|
|