From c06f42ac52a00ecd4dc3cb763e19b5ab296d7bec Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 22 Aug 2026 10:33:27 +0200 Subject: [PATCH] Limit type filter in activities table component to used types --- apps/api/src/app/user/user.service.ts | 14 +++-------- .../holding-detail-dialog.component.ts | 25 +++++++++++++------ .../activities-table.component.html | 2 +- .../migration.sql | 2 +- prisma/schema.prisma | 2 +- 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 7256c9e67..cb64e52d5 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -61,7 +61,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler'; import { Prisma, Role, User } from '@prisma/client'; -import { differenceInDays, min, subDays } from 'date-fns'; +import { differenceInDays, subDays } from 'date-fns'; import { isNil, without } from 'lodash'; import { createHmac } from 'node:crypto'; @@ -169,16 +169,10 @@ export class UserService { return type; }); - const datesOfFirstActivityByType = activitiesGroupedByType.map( - ({ _min }) => { - return _min.date; - } - ); - + // The groupBy is ordered by the minimum date, thus the first group + // carries the date of the first activity const dateOfFirstActivity = - datesOfFirstActivityByType.length > 0 - ? min(datesOfFirstActivityByType) - : new Date(); + activitiesGroupedByType[0]?._min.date ?? new Date(); const resolvedUserSettings = resolveUserSettings({ impersonationUserSettings: impersonationUser?.settings diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index e85c2bf6b..52050072f 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -648,17 +648,18 @@ export class GfHoldingDetailDialogComponent implements OnInit { this.dataService .postActivity(activity) .pipe( + takeUntilDestroyed(this.destroyRef), switchMap(() => { return this.userService.get(true); - }), - takeUntilDestroyed(this.destroyRef) + }) ) - .subscribe(() => { - this.router.navigate( - internalRoutes.portfolio.subRoutes.activities.routerLink - ); - - this.dialogRef.close(); + .subscribe({ + error: () => { + this.navigateToActivities(); + }, + next: () => { + this.navigateToActivities(); + } }); } @@ -734,4 +735,12 @@ export class GfHoldingDetailDialogComponent implements OnInit { { id: this.data.symbol, type: 'SYMBOL' } ]; } + + private navigateToActivities() { + this.router.navigate( + internalRoutes.portfolio.subRoutes.activities.routerLink + ); + + this.dialogRef.close(); + } } diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index c1c49473f..9bfd44b9d 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -2,7 +2,7 @@ class="align-items-center d-flex justify-content-end justify-content-lg-between" >