From d30a92636156b4b89192619b21711e2b1015f46e Mon Sep 17 00:00:00 2001 From: David Requeno Date: Mon, 10 Aug 2026 21:51:07 -0600 Subject: [PATCH] Optimize stock split activity adjustments --- .../app/activities/activities.service.spec.ts | 2 +- .../src/app/activities/activities.service.ts | 26 ++++++++++++------- .../asset-profile-split.helper.spec.ts | 4 +-- .../asset-profile-split.helper.ts | 2 +- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/api/src/app/activities/activities.service.spec.ts b/apps/api/src/app/activities/activities.service.spec.ts index d2ae51b23..a8268019d 100644 --- a/apps/api/src/app/activities/activities.service.spec.ts +++ b/apps/api/src/app/activities/activities.service.spec.ts @@ -44,7 +44,7 @@ describe('ActivitiesService', () => { const result = await getAdjustedActivity(activity, []); expect(result).toEqual(activity); - expect(result).not.toBe(activity); + expect(result).toBe(activity); }); it.each([ diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 9f9aa5566..4ee96e7ea 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -948,18 +948,24 @@ export class ActivitiesService { assetProfiles ); - activities.activities = activities.activities.map((activity) => { - const key = getAssetProfileIdentifier({ - dataSource: activity.assetProfile.dataSource, - symbol: activity.assetProfile.symbol - }); - - return adjustActivityBySplits( - activity, - splitsByAssetProfile.get(key) ?? [] - ); + const hasSplits = [...splitsByAssetProfile.values()].some((splits) => { + return splits.length > 0; }); + if (hasSplits) { + activities.activities = activities.activities.map((activity) => { + const key = getAssetProfileIdentifier({ + dataSource: activity.assetProfile.dataSource, + symbol: activity.assetProfile.symbol + }); + + return adjustActivityBySplits( + activity, + splitsByAssetProfile.get(key) ?? [] + ); + }); + } + if (withCash && !this.areCashActivitiesExcludedByFilters(filters)) { const cashDetails = await this.accountService.getCashDetails({ filters, diff --git a/apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts b/apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts index 9b503fd67..72a64e990 100644 --- a/apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts +++ b/apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts @@ -54,9 +54,9 @@ describe('adjustActivityBySplits', () => { ); expect(adjustedActivityOnSplitDate).toEqual(activityOnSplitDate); - expect(adjustedActivityOnSplitDate).not.toBe(activityOnSplitDate); + expect(adjustedActivityOnSplitDate).toBe(activityOnSplitDate); expect(adjustedActivityAfterSplit).toEqual(activityAfterSplit); - expect(adjustedActivityAfterSplit).not.toBe(activityAfterSplit); + expect(adjustedActivityAfterSplit).toBe(activityAfterSplit); }); it('compares stored UTC split dates without normalizing them locally', () => { diff --git a/apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts b/apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts index 0b38092ec..cdb0e1808 100644 --- a/apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts +++ b/apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts @@ -19,7 +19,7 @@ export function adjustActivityBySplits( } if (splitFactor.eq(1)) { - return { ...activity }; + return activity; } return {