Browse Source

Align with account dialog host

pull/7472/head
Thomas Kaul 3 weeks ago
parent
commit
162f6e3392
  1. 4
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  2. 89
      apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts

4
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -324,7 +324,9 @@ export class GfActivitiesPageComponent implements OnInit {
this.hasPermissionToCreateActivity = this.hasPermissionToCreateActivity =
!this.hasImpersonationId && !this.hasImpersonationId &&
hasPermission(this.user.permissions, permissions.createActivity); hasPermission(this.user.permissions, permissions.createActivity) &&
!this.user.settings?.isRestrictedView;
this.hasPermissionToDeleteActivity = this.hasPermissionToDeleteActivity =
!this.hasImpersonationId && !this.hasImpersonationId &&
hasPermission(this.user.permissions, permissions.deleteActivity); hasPermission(this.user.permissions, permissions.deleteActivity);

89
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 { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { DeviceDetectorService } from 'ngx-device-detector'; import { DeviceDetectorService } from 'ngx-device-detector';
import { Observable, of, Subject } from 'rxjs'; import { EMPTY, Observable, of, Subject } from 'rxjs';
import { import {
catchError,
distinctUntilChanged, distinctUntilChanged,
map, map,
switchMap, switchMap,
@ -78,41 +79,21 @@ export class GfActivityDialogHostComponent implements OnDestroy, OnInit {
return { activity, user }; return { activity, user };
}) })
); );
}),
catchError(() => {
this.navigateBack();
return EMPTY;
}) })
); );
}), }),
takeUntilDestroyed(this.destroyRef) takeUntilDestroyed(this.destroyRef)
) )
.subscribe({ .subscribe(({ activity, user }) => {
error: () => { if (mode === 'update') {
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
if ( if (
!hasPermission(user?.permissions, permissions.createActivity) || !activity ||
!hasPermission(user?.permissions, permissions.updateActivity) ||
this.isReadOnlyMode(user) this.isReadOnlyMode(user)
) { ) {
this.navigateBack(); this.navigateBack();
@ -120,21 +101,41 @@ export class GfActivityDialogHostComponent implements OnDestroy, OnInit {
return; return;
} }
this.openDialog({ this.openDialog({ activity, user, isUpdate: true });
user,
activity: { return;
...activity, }
accountId: activity?.accountId,
assetProfile: activity?.assetProfile ?? null, if (mode === 'clone' && !activity) {
date: new Date(), this.navigateBack();
fee: 0,
id: null, return;
type: activity?.type ?? 'BUY',
unitPrice: null
},
isUpdate: false
});
} }
// 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
});
}); });
} }

Loading…
Cancel
Save