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" >
- @if (hasPermissionToFilterByType && activityTypeOptions().length > 0) { + @if (hasPermissionToFilterByType && activityTypeOptions().length > 1) { Type diff --git a/prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql b/prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql index 5e5624dc0..8ae5fcd3a 100644 --- a/prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql +++ b/prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql @@ -14,4 +14,4 @@ CREATE INDEX "Order_symbolProfileId_date_idx" ON "Order"("symbolProfileId", "dat CREATE INDEX "Order_userId_date_type_idx" ON "Order"("userId", "date", "type"); -- CreateIndex -CREATE INDEX "Order_userId_type_idx" ON "Order"("userId", "type"); +CREATE INDEX "Order_userId_type_date_idx" ON "Order"("userId", "type", "date"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5ecc6ee49..01011ef8e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -197,7 +197,7 @@ model Order { @@index([date]) @@index([symbolProfileId, date]) @@index([userId, date, type]) - @@index([userId, type]) + @@index([userId, type, date]) } model Platform {