Browse Source

Fix value redaction

bugfix/value-redaction-in-latest-activities-of-public-portfolio-page
Thomas Kaul 14 hours ago
parent
commit
473e236819
  1. 76
      apps/api/src/app/endpoints/public/public.service.ts
  2. 1
      apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts
  3. 2
      libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts

76
apps/api/src/app/endpoints/public/public.service.ts

@ -81,25 +81,34 @@ export class PublicService {
}) })
]); ]);
const { activities } = await this.activitiesService.getActivities({
filters,
sortColumn: 'date',
sortDirection: 'desc',
take: 10,
types: [ActivityType.BUY, ActivityType.SELL],
userCurrency: user?.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY,
userId: user.id,
withExcludedAccountsAndActivities: false
});
// Experimental // Experimental
const latestActivities = this.configurationService.get( let latestActivities: PublicPortfolioResponse['latestActivities'] = [];
'ENABLE_FEATURE_SUBSCRIPTION'
) if (!this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
? [] const { activities } = await this.activitiesService.getActivities({
: activities.map( filters,
({ sortColumn: 'date',
assetProfile, sortDirection: 'desc',
take: 10,
types: [ActivityType.BUY, ActivityType.SELL],
userCurrency: user?.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY,
userId: user.id,
withExcludedAccountsAndActivities: false
});
latestActivities = activities.map(
({
assetProfile,
currency,
date,
fee,
quantity,
type,
unitPrice,
value,
valueInBaseCurrency
}) => {
return {
currency, currency,
date, date,
fee, fee,
@ -107,26 +116,17 @@ export class PublicService {
type, type,
unitPrice, unitPrice,
value, value,
valueInBaseCurrency valueInBaseCurrency,
}) => { assetProfile: {
return { currency: assetProfile.currency,
currency, dataSource: assetProfile.dataSource,
date, name: assetProfile.name,
fee, symbol: assetProfile.symbol
quantity, }
type, };
unitPrice, }
value, );
valueInBaseCurrency, }
assetProfile: {
currency: assetProfile.currency,
dataSource: assetProfile.dataSource,
name: assetProfile.name,
symbol: assetProfile.symbol
}
};
}
);
Object.values(markets ?? {}).forEach((market) => { Object.values(markets ?? {}).forEach((market) => {
delete market.valueInBaseCurrency; delete market.valueInBaseCurrency;

1
apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts

@ -89,6 +89,7 @@ export class TransformDataSourceInResponseInterceptor<
'holdings[*].assetProfile.dataSource', 'holdings[*].assetProfile.dataSource',
'holdings[*].dataSource', 'holdings[*].dataSource',
'items[*].dataSource', 'items[*].dataSource',
'latestActivities[*].assetProfile.dataSource',
'settings["filters.dataSource"]', 'settings["filters.dataSource"]',
'watchlist[*].dataSource' 'watchlist[*].dataSource'
] ]

2
libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts

@ -24,7 +24,7 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 {
Order, Order,
'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice' 'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice'
> & { > & {
assetProfile?: Pick< assetProfile: Pick<
EnhancedAssetProfile, EnhancedAssetProfile,
'currency' | 'dataSource' | 'name' | 'symbol' 'currency' | 'dataSource' | 'name' | 'symbol'
>; >;

Loading…
Cancel
Save