diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 0f7623bdc..d8c3dd002 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -3,6 +3,7 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.servic import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.interceptor'; +import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; @@ -87,6 +88,7 @@ export class AccountController { @Get() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(RedactValuesInResponseInterceptor) + @UseInterceptors(TransformDataSourceInRequestInterceptor) public async getAllAccounts( @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, @Query('dataSource') filterByDataSource?: string, diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 70cd08874..8541f65ac 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -9,6 +9,7 @@ import { DATE_FORMAT, downloadAsFile } from '@ghostfolio/common/helper'; import { DataProviderInfo, EnhancedSymbolProfile, + Filter, LineChartItem, User } from '@ghostfolio/common/interfaces'; @@ -152,6 +153,11 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { tags: [] }); + const filters: Filter[] = [ + { id: this.data.dataSource, type: 'DATA_SOURCE' }, + { id: this.data.symbol, type: 'SYMBOL' } + ]; + this.tagsAvailable = tags.map(({ id, name }) => { return { id, @@ -173,12 +179,20 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { .subscribe(); }); + this.dataService + .fetchAccounts({ + filters + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ accounts }) => { + this.accounts = accounts; + + this.changeDetectorRef.markForCheck(); + }); + this.dataService .fetchActivities({ - filters: [ - { id: this.data.dataSource, type: 'DATA_SOURCE' }, - { id: this.data.symbol, type: 'SYMBOL' } - ], + filters, sortColumn: this.sortColumn, sortDirection: this.sortDirection }) @@ -197,7 +211,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe( ({ - accounts, averagePrice, dataProviderInfo, dividendInBaseCurrency, @@ -219,7 +232,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { transactionCount, value }) => { - this.accounts = accounts; this.averagePrice = averagePrice; this.benchmarkDataItems = []; this.countries = {}; diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index cbdde0265..78373adcc 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -173,8 +173,10 @@ export class DataService { ); } - public fetchAccounts() { - return this.http.get('/api/v1/account'); + public fetchAccounts({ filters }: { filters?: Filter[] } = {}) { + const params = this.buildFiltersAsQueryParams({ filters }); + + return this.http.get('/api/v1/account', { params }); } public fetchActivities({