From 8165fb26835ec38e9687ebc072c34193abb6df1b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 15 Jan 2024 20:00:32 +0100 Subject: [PATCH] Refactoring --- .../account-detail-dialog.component.ts | 36 ++++++++++++------- .../account-detail-dialog.html | 2 +- .../holdings/holdings-page.component.ts | 8 ++--- .../portfolio/holdings/holdings-page.html | 4 +-- apps/client/src/app/services/data.service.ts | 15 ++++---- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 0e7608fd9..90736d7cf 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -24,8 +24,8 @@ import { OrderWithAccount } from '@ghostfolio/common/types'; import Big from 'big.js'; import { format, parseISO } from 'date-fns'; import { isNumber } from 'lodash'; -import { Observable, Subject } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; import { AccountDetailDialogParams } from './interfaces/interfaces'; @@ -46,7 +46,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { public hasImpersonationId: boolean; public hasPermissionToDeleteAccountBalance: boolean; public historicalDataItems: HistoricalDataItem[]; - public holdings$: Observable; + public holdings: PortfolioPosition[]; public isLoadingActivities: boolean; public isLoadingChart: boolean; public name: string; @@ -85,16 +85,6 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } public ngOnInit() { - this.holdings$ = this.dataService - .fetchPortfolioDetails({ - filters: [ - { - type: 'ACCOUNT', - id: this.data.accountId - } - ] - }) - .pipe(map((d) => Object.values(d.holdings))); this.dataService .fetchAccount(this.data.accountId) .pipe(takeUntil(this.unsubscribeSubject)) @@ -126,6 +116,26 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } ); + this.dataService + .fetchPortfolioDetails({ + filters: [ + { + type: 'ACCOUNT', + id: this.data.accountId + } + ] + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ holdings }) => { + this.holdings = []; + + for (const [symbol, holding] of Object.entries(holdings)) { + this.holdings.push(holding); + } + + this.changeDetectorRef.markForCheck(); + }); + this.impersonationStorageService .onChangeHasImpersonation() .pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index d55abdefb..193d4b358 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -75,7 +75,7 @@ [baseCurrency]="user?.settings?.baseCurrency" [deviceType]="data.deviceType" [locale]="user?.settings?.locale" - [positions]="holdings$ | async" + [positions]="holdings" > diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts index ee0b57452..5afb649b7 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -31,10 +31,10 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { public filters$ = new Subject(); public hasImpersonationId: boolean; public hasPermissionToCreateOrder: boolean; + public holdings: PortfolioPosition[]; public isLoading = false; public placeholder = ''; public portfolioDetails: PortfolioDetails; - public positionsArray: PortfolioPosition[]; public user: User; private unsubscribeSubject = new Subject(); @@ -152,16 +152,16 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { } public initialize() { - this.positionsArray = []; + this.holdings = []; } public initializeAnalysisData() { this.initialize(); - for (const [symbol, position] of Object.entries( + for (const [symbol, holding] of Object.entries( this.portfolioDetails.holdings )) { - this.positionsArray.push(position); + this.holdings.push(holding); } } diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html index 98b5dad87..e8bb6eeb3 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html @@ -17,10 +17,10 @@ [deviceType]="deviceType" [hasPermissionToCreateActivity]="hasPermissionToCreateOrder" [locale]="user?.settings?.locale" - [positions]="positionsArray" + [positions]="holdings" >