Browse Source

Migrate clone, create and edit activity dialogs to dedicated routes

pull/7343/head
Thomas Kaul 6 days ago
parent
commit
7c8f6f792f
  1. 15
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  2. 15
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  3. 31
      apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts
  4. 2
      libs/common/src/lib/routes/routes.ts

15
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts

@ -40,6 +40,7 @@ import { PageEvent } from '@angular/material/paginator';
import { Sort, SortDirection } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { MatTabsModule } from '@angular/material/tabs';
import { NavigationStart, Router } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { Big } from 'big.js';
import { format, parseISO } from 'date-fns';
@ -51,7 +52,7 @@ import {
} from 'ionicons/icons';
import { isNumber } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { forkJoin } from 'rxjs';
import { filter, forkJoin } from 'rxjs';
import { AccountDetailDialogParams } from './interfaces/interfaces';
@ -112,9 +113,21 @@ export class GfAccountDetailDialogComponent implements OnInit {
private readonly destroyRef = inject(DestroyRef);
private readonly dialogRef =
inject<MatDialogRef<GfAccountDetailDialogComponent>>(MatDialogRef);
private readonly router = inject(Router);
private readonly userService = inject(UserService);
public constructor() {
this.router.events
.pipe(
filter((event) => {
return event instanceof NavigationStart;
}),
takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.dialogRef.close();
});
this.userService.stateChanged
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {

15
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -63,7 +63,7 @@ import { PageEvent } from '@angular/material/paginator';
import { SortDirection } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { MatTabsModule } from '@angular/material/tabs';
import { Router, RouterModule } from '@angular/router';
import { NavigationStart, Router, RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { Account, MarketData, Tag } from '@prisma/client';
import { isUUID } from 'class-validator';
@ -80,7 +80,7 @@ import {
} from 'ionicons/icons';
import { isNumber, round, uniqBy } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { switchMap } from 'rxjs/operators';
import { filter, switchMap } from 'rxjs/operators';
import { HoldingDetailDialogParams } from './interfaces/interfaces';
@ -200,6 +200,17 @@ export class GfHoldingDetailDialogComponent implements OnInit {
private readonly userService = inject(UserService);
public constructor() {
this.router.events
.pipe(
filter((event) => {
return event instanceof NavigationStart;
}),
takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.dialogRef.close();
});
addIcons({
arrowDownCircleOutline,
createOutline,

31
apps/client/src/app/pages/portfolio/activities/activity-dialog-host/activity-dialog-host.component.ts

@ -16,7 +16,7 @@ import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router';
import { DeviceDetectorService } from 'ngx-device-detector';
import { Observable, of } from 'rxjs';
import { map, switchMap } from 'rxjs/operators';
import { finalize, map, switchMap } from 'rxjs/operators';
import { GfCreateOrUpdateActivityDialogComponent } from '../create-or-update-activity-dialog/create-or-update-activity-dialog.component';
import { CreateOrUpdateActivityDialogParams } from '../create-or-update-activity-dialog/interfaces/interfaces';
@ -106,22 +106,27 @@ export class GfActivityDialogHostComponent implements OnInit {
.afterClosed()
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((result: CreateOrderDto | UpdateOrderDto | null) => {
if (result) {
const request$: Observable<unknown> = isUpdate
? this.dataService.putActivity(result as UpdateOrderDto)
: this.dataService.postActivity(result as CreateOrderDto);
if (!result) {
this.navigateBack();
return;
}
request$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
const request$: Observable<unknown> = isUpdate
? this.dataService.putActivity(result as UpdateOrderDto)
: this.dataService.postActivity(result as CreateOrderDto);
request$
.pipe(
finalize(() => {
this.navigateBack();
})
)
.subscribe({
next: () => {
this.userService
.get(true)
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.userService.get(true).subscribe();
}
});
}
this.navigateBack();
});
}
}

2
libs/common/src/lib/routes/routes.ts

@ -127,7 +127,6 @@ export const internalRoutes = {
routerLink: ['/portfolio', 'activities'],
subRoutes: {
clone: {
excludeFromAssistant: true,
path: 'clone',
title: $localize`Clone Activity`
},
@ -137,7 +136,6 @@ export const internalRoutes = {
title: $localize`Add Activity`
},
update: {
excludeFromAssistant: true,
path: 'update',
title: $localize`Update Activity`
}

Loading…
Cancel
Save