From 162f6e339269e2d63182fdaf2547863aa113d7b7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:25:05 +0200 Subject: [PATCH] Align with account dialog host --- .../activities/activities-page.component.ts | 4 +- .../activity-dialog-host.component.ts | 89 ++++++++++--------- 2 files changed, 48 insertions(+), 45 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts index 3362dc5d5..36fbe3dea 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts @@ -324,7 +324,9 @@ export class GfActivitiesPageComponent implements OnInit { this.hasPermissionToCreateActivity = !this.hasImpersonationId && - hasPermission(this.user.permissions, permissions.createActivity); + hasPermission(this.user.permissions, permissions.createActivity) && + !this.user.settings?.isRestrictedView; + this.hasPermissionToDeleteActivity = !this.hasImpersonationId && hasPermission(this.user.permissions, permissions.deleteActivity); diff --git a/apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts b/apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts index aeb020cd4..6b70acbad 100644 --- a/apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts @@ -18,8 +18,9 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { DeviceDetectorService } from 'ngx-device-detector'; -import { Observable, of, Subject } from 'rxjs'; +import { EMPTY, Observable, of, Subject } from 'rxjs'; import { + catchError, distinctUntilChanged, map, switchMap, @@ -78,41 +79,21 @@ export class GfActivityDialogHostComponent implements OnDestroy, OnInit { return { activity, user }; }) ); + }), + catchError(() => { + this.navigateBack(); + + return EMPTY; }) ); }), takeUntilDestroyed(this.destroyRef) ) - .subscribe({ - error: () => { - this.navigateBack(); - }, - next: ({ activity, user }) => { - if (mode === 'update') { - if ( - !activity || - !hasPermission(user?.permissions, permissions.updateActivity) || - this.isReadOnlyMode(user) - ) { - this.navigateBack(); - - return; - } - - this.openDialog({ activity, user, isUpdate: true }); - - return; - } - - if (mode === 'clone' && !activity) { - this.navigateBack(); - - return; - } - - // Cloning creates a new activity as well + .subscribe(({ activity, user }) => { + if (mode === 'update') { if ( - !hasPermission(user?.permissions, permissions.createActivity) || + !activity || + !hasPermission(user?.permissions, permissions.updateActivity) || this.isReadOnlyMode(user) ) { this.navigateBack(); @@ -120,21 +101,41 @@ export class GfActivityDialogHostComponent implements OnDestroy, OnInit { return; } - this.openDialog({ - user, - activity: { - ...activity, - accountId: activity?.accountId, - assetProfile: activity?.assetProfile ?? null, - date: new Date(), - fee: 0, - id: null, - type: activity?.type ?? 'BUY', - unitPrice: null - }, - isUpdate: false - }); + this.openDialog({ activity, user, isUpdate: true }); + + return; + } + + if (mode === 'clone' && !activity) { + this.navigateBack(); + + return; } + + // Cloning creates a new activity as well + if ( + !hasPermission(user?.permissions, permissions.createActivity) || + this.isReadOnlyMode(user) + ) { + this.navigateBack(); + + return; + } + + this.openDialog({ + user, + activity: { + ...activity, + accountId: activity?.accountId, + assetProfile: activity?.assetProfile ?? null, + date: new Date(), + fee: 0, + id: null, + type: activity?.type ?? 'BUY', + unitPrice: null + }, + isUpdate: false + }); }); }