Browse Source

Fix value redaction

bugfix/value-redaction-in-latest-activities-of-public-portfolio-page
Thomas Kaul 16 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
const latestActivities = this.configurationService.get(
'ENABLE_FEATURE_SUBSCRIPTION'
)
? []
: activities.map(
({
assetProfile,
let latestActivities: PublicPortfolioResponse['latestActivities'] = [];
if (!this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
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
});
latestActivities = activities.map(
({
assetProfile,
currency,
date,
fee,
quantity,
type,
unitPrice,
value,
valueInBaseCurrency
}) => {
return {
currency,
date,
fee,
@ -107,26 +116,17 @@ export class PublicService {
type,
unitPrice,
value,
valueInBaseCurrency
}) => {
return {
currency,
date,
fee,
quantity,
type,
unitPrice,
value,
valueInBaseCurrency,
assetProfile: {
currency: assetProfile.currency,
dataSource: assetProfile.dataSource,
name: assetProfile.name,
symbol: assetProfile.symbol
}
};
}
);
valueInBaseCurrency,
assetProfile: {
currency: assetProfile.currency,
dataSource: assetProfile.dataSource,
name: assetProfile.name,
symbol: assetProfile.symbol
}
};
}
);
}
Object.values(markets ?? {}).forEach((market) => {
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[*].dataSource',
'items[*].dataSource',
'latestActivities[*].assetProfile.dataSource',
'settings["filters.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,
'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice'
> & {
assetProfile?: Pick<
assetProfile: Pick<
EnhancedAssetProfile,
'currency' | 'dataSource' | 'name' | 'symbol'
>;

Loading…
Cancel
Save