diff --git a/CHANGELOG.md b/CHANGELOG.md index ef67e69f1..8fe934494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed the support for multiple accounts with the same name +- Fixed the preselected default account of the create activity dialog ## 1.101.0 - 08.01.2022 diff --git a/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts index b6a1ee647..3ccdb0921 100644 --- a/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts +++ b/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts @@ -106,20 +106,7 @@ export class TransactionsPageComponent implements OnDestroy, OnInit { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { if (state?.user) { - this.user = state.user; - - this.defaultAccountId = this.user?.accounts.find((account) => { - return account.isDefault; - })?.id; - - this.hasPermissionToCreateOrder = hasPermission( - this.user.permissions, - permissions.createOrder - ); - this.hasPermissionToDeleteOrder = hasPermission( - this.user.permissions, - permissions.deleteOrder - ); + this.updateUser(state.user); this.changeDetectorRef.markForCheck(); } @@ -352,43 +339,50 @@ export class TransactionsPageComponent implements OnDestroy, OnInit { } private openCreateTransactionDialog(aTransaction?: OrderModel): void { - const dialogRef = this.dialog.open(CreateOrUpdateTransactionDialog, { - data: { - accounts: this.user?.accounts?.filter((account) => { - return account.accountType === 'SECURITIES'; - }), - transaction: { - accountId: aTransaction?.accountId ?? this.defaultAccountId, - currency: aTransaction?.currency ?? null, - dataSource: aTransaction?.dataSource ?? null, - date: new Date(), - fee: 0, - quantity: null, - symbol: aTransaction?.symbol ?? null, - type: aTransaction?.type ?? 'BUY', - unitPrice: null - }, - user: this.user - }, - height: this.deviceType === 'mobile' ? '97.5vh' : '80vh', - width: this.deviceType === 'mobile' ? '100vw' : '50rem' - }); - - dialogRef - .afterClosed() + this.userService + .get() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((data: any) => { - const transaction: CreateOrderDto = data?.transaction; + .subscribe((user) => { + this.updateUser(user); - if (transaction) { - this.dataService.postOrder(transaction).subscribe({ - next: () => { - this.fetchOrders(); + const dialogRef = this.dialog.open(CreateOrUpdateTransactionDialog, { + data: { + accounts: this.user?.accounts?.filter((account) => { + return account.accountType === 'SECURITIES'; + }), + transaction: { + accountId: aTransaction?.accountId ?? this.defaultAccountId, + currency: aTransaction?.currency ?? null, + dataSource: aTransaction?.dataSource ?? null, + date: new Date(), + fee: 0, + quantity: null, + symbol: aTransaction?.symbol ?? null, + type: aTransaction?.type ?? 'BUY', + unitPrice: null + }, + user: this.user + }, + height: this.deviceType === 'mobile' ? '97.5vh' : '80vh', + width: this.deviceType === 'mobile' ? '100vw' : '50rem' + }); + + dialogRef + .afterClosed() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((data: any) => { + const transaction: CreateOrderDto = data?.transaction; + + if (transaction) { + this.dataService.postOrder(transaction).subscribe({ + next: () => { + this.fetchOrders(); + } + }); } - }); - } - this.router.navigate(['.'], { relativeTo: this.route }); + this.router.navigate(['.'], { relativeTo: this.route }); + }); }); } @@ -397,7 +391,7 @@ export class TransactionsPageComponent implements OnDestroy, OnInit { .get() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { - this.user = user; + this.updateUser(user); const dialogRef = this.dialog.open(PositionDetailDialog, { autoFocus: false, @@ -419,4 +413,21 @@ export class TransactionsPageComponent implements OnDestroy, OnInit { }); }); } + + private updateUser(aUser: User) { + this.user = aUser; + + this.defaultAccountId = this.user?.accounts.find((account) => { + return account.isDefault; + })?.id; + + this.hasPermissionToCreateOrder = hasPermission( + this.user.permissions, + permissions.createOrder + ); + this.hasPermissionToDeleteOrder = hasPermission( + this.user.permissions, + permissions.deleteOrder + ); + } }