|
|
@ -13,7 +13,13 @@ import { GfAccountsTableComponent } from '@ghostfolio/ui/accounts-table'; |
|
|
import { NotificationService } from '@ghostfolio/ui/notifications'; |
|
|
import { NotificationService } from '@ghostfolio/ui/notifications'; |
|
|
import { DataService } from '@ghostfolio/ui/services'; |
|
|
import { DataService } from '@ghostfolio/ui/services'; |
|
|
|
|
|
|
|
|
import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; |
|
|
import { |
|
|
|
|
|
ChangeDetectorRef, |
|
|
|
|
|
Component, |
|
|
|
|
|
DestroyRef, |
|
|
|
|
|
OnInit |
|
|
|
|
|
} from '@angular/core'; |
|
|
|
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { MatButtonModule } from '@angular/material/button'; |
|
|
import { MatButtonModule } from '@angular/material/button'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { ActivatedRoute, Router, RouterModule } from '@angular/router'; |
|
|
import { ActivatedRoute, Router, RouterModule } from '@angular/router'; |
|
|
@ -21,8 +27,8 @@ import { Account as AccountModel } from '@prisma/client'; |
|
|
import { addIcons } from 'ionicons'; |
|
|
import { addIcons } from 'ionicons'; |
|
|
import { addOutline } from 'ionicons/icons'; |
|
|
import { addOutline } from 'ionicons/icons'; |
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
import { EMPTY, Subject, Subscription } from 'rxjs'; |
|
|
import { EMPTY, Subscription } from 'rxjs'; |
|
|
import { catchError, takeUntil } from 'rxjs/operators'; |
|
|
import { catchError } from 'rxjs/operators'; |
|
|
|
|
|
|
|
|
import { GfCreateOrUpdateAccountDialogComponent } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; |
|
|
import { GfCreateOrUpdateAccountDialogComponent } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; |
|
|
import { CreateOrUpdateAccountDialogParams } from './create-or-update-account-dialog/interfaces/interfaces'; |
|
|
import { CreateOrUpdateAccountDialogParams } from './create-or-update-account-dialog/interfaces/interfaces'; |
|
|
@ -36,7 +42,7 @@ import { GfTransferBalanceDialogComponent } from './transfer-balance/transfer-ba |
|
|
styleUrls: ['./accounts-page.scss'], |
|
|
styleUrls: ['./accounts-page.scss'], |
|
|
templateUrl: './accounts-page.html' |
|
|
templateUrl: './accounts-page.html' |
|
|
}) |
|
|
}) |
|
|
export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
export class GfAccountsPageComponent implements OnInit { |
|
|
public accounts: AccountModel[]; |
|
|
public accounts: AccountModel[]; |
|
|
public activitiesCount = 0; |
|
|
public activitiesCount = 0; |
|
|
public deviceType: string; |
|
|
public deviceType: string; |
|
|
@ -48,11 +54,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
public totalValueInBaseCurrency = 0; |
|
|
public totalValueInBaseCurrency = 0; |
|
|
public user: User; |
|
|
public user: User; |
|
|
|
|
|
|
|
|
private unsubscribeSubject = new Subject<void>(); |
|
|
|
|
|
|
|
|
|
|
|
public constructor( |
|
|
public constructor( |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
private dataService: DataService, |
|
|
private dataService: DataService, |
|
|
|
|
|
private destroyRef: DestroyRef, |
|
|
private deviceService: DeviceDetectorService, |
|
|
private deviceService: DeviceDetectorService, |
|
|
private dialog: MatDialog, |
|
|
private dialog: MatDialog, |
|
|
private impersonationStorageService: ImpersonationStorageService, |
|
|
private impersonationStorageService: ImpersonationStorageService, |
|
|
@ -62,7 +67,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
private userService: UserService |
|
|
private userService: UserService |
|
|
) { |
|
|
) { |
|
|
this.route.queryParams |
|
|
this.route.queryParams |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((params) => { |
|
|
.subscribe((params) => { |
|
|
if (params['accountId'] && params['accountDetailDialog']) { |
|
|
if (params['accountId'] && params['accountDetailDialog']) { |
|
|
this.openAccountDetailDialog(params['accountId']); |
|
|
this.openAccountDetailDialog(params['accountId']); |
|
|
@ -94,13 +99,13 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
this.impersonationStorageService |
|
|
this.impersonationStorageService |
|
|
.onChangeHasImpersonation() |
|
|
.onChangeHasImpersonation() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((impersonationId) => { |
|
|
.subscribe((impersonationId) => { |
|
|
this.hasImpersonationId = !!impersonationId; |
|
|
this.hasImpersonationId = !!impersonationId; |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
this.userService.stateChanged |
|
|
this.userService.stateChanged |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((state) => { |
|
|
.subscribe((state) => { |
|
|
if (state?.user) { |
|
|
if (state?.user) { |
|
|
this.user = state.user; |
|
|
this.user = state.user; |
|
|
@ -124,7 +129,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
public fetchAccounts() { |
|
|
public fetchAccounts() { |
|
|
this.dataService |
|
|
this.dataService |
|
|
.fetchAccounts() |
|
|
.fetchAccounts() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe( |
|
|
.subscribe( |
|
|
({ |
|
|
({ |
|
|
accounts, |
|
|
accounts, |
|
|
@ -151,11 +156,11 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.deleteAccount(aId) |
|
|
.deleteAccount(aId) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.userService |
|
|
this.userService |
|
|
.get(true) |
|
|
.get(true) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(); |
|
|
.subscribe(); |
|
|
|
|
|
|
|
|
this.fetchAccounts(); |
|
|
this.fetchAccounts(); |
|
|
@ -204,18 +209,18 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((account: UpdateAccountDto | null) => { |
|
|
.subscribe((account: UpdateAccountDto | null) => { |
|
|
if (account) { |
|
|
if (account) { |
|
|
this.reset(); |
|
|
this.reset(); |
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.putAccount(account) |
|
|
.putAccount(account) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.userService |
|
|
this.userService |
|
|
.get(true) |
|
|
.get(true) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(); |
|
|
.subscribe(); |
|
|
|
|
|
|
|
|
this.fetchAccounts(); |
|
|
this.fetchAccounts(); |
|
|
@ -228,11 +233,6 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ngOnDestroy() { |
|
|
|
|
|
this.unsubscribeSubject.next(); |
|
|
|
|
|
this.unsubscribeSubject.complete(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private openAccountDetailDialog(aAccountId: string) { |
|
|
private openAccountDetailDialog(aAccountId: string) { |
|
|
const dialogRef = this.dialog.open< |
|
|
const dialogRef = this.dialog.open< |
|
|
GfAccountDetailDialogComponent, |
|
|
GfAccountDetailDialogComponent, |
|
|
@ -254,7 +254,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.fetchAccounts(); |
|
|
this.fetchAccounts(); |
|
|
|
|
|
|
|
|
@ -284,18 +284,18 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((account: CreateAccountDto | null) => { |
|
|
.subscribe((account: CreateAccountDto | null) => { |
|
|
if (account) { |
|
|
if (account) { |
|
|
this.reset(); |
|
|
this.reset(); |
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.postAccount(account) |
|
|
.postAccount(account) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.userService |
|
|
this.userService |
|
|
.get(true) |
|
|
.get(true) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(); |
|
|
.subscribe(); |
|
|
|
|
|
|
|
|
this.fetchAccounts(); |
|
|
this.fetchAccounts(); |
|
|
@ -321,7 +321,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((data: any) => { |
|
|
.subscribe((data: any) => { |
|
|
if (data) { |
|
|
if (data) { |
|
|
this.reset(); |
|
|
this.reset(); |
|
|
@ -343,7 +343,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { |
|
|
|
|
|
|
|
|
return EMPTY; |
|
|
return EMPTY; |
|
|
}), |
|
|
}), |
|
|
takeUntil(this.unsubscribeSubject) |
|
|
takeUntilDestroyed(this.destroyRef) |
|
|
) |
|
|
) |
|
|
.subscribe(() => { |
|
|
.subscribe(() => { |
|
|
this.fetchAccounts(); |
|
|
this.fetchAccounts(); |
|
|
|