diff --git a/apps/api/src/app/activities/activities.controller.ts b/apps/api/src/app/activities/activities.controller.ts index 8b42514f8..6b0440dc4 100644 --- a/apps/api/src/app/activities/activities.controller.ts +++ b/apps/api/src/app/activities/activities.controller.ts @@ -13,7 +13,6 @@ import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import { CreateOrderDto, UpdateOrderDto } from '@ghostfolio/common/dtos'; -import { splitStringToArray } from '@ghostfolio/common/helper'; import { ActivitiesResponse, ActivityResponse @@ -124,10 +123,6 @@ export class ActivitiesController { @Query('tags') filterByTags?: string, @Query('take') take?: number ): Promise { - const types = filterByTypes - ? (splitStringToArray(filterByTypes) as ActivityType[]) - : undefined; - let endDate: Date; let startDate: Date; @@ -145,6 +140,9 @@ export class ActivitiesController { const impersonationUserId = await this.impersonationService.validateImpersonationId(impersonationId); + + const types = (filterByTypes?.split(',') as ActivityType[]) ?? []; + const userCurrency = this.request.user.settings.settings.baseCurrency; const { activities, count } = await this.activitiesService.getActivities({ diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 89b9468f8..58b9c11a4 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -629,7 +629,7 @@ export class ActivitiesService { orderBy = [{ [sortColumn]: sortDirection }]; } - if (types) { + if (types?.length > 0) { where.type = { in: types }; } diff --git a/apps/api/src/app/export/export.controller.ts b/apps/api/src/app/export/export.controller.ts index 6d31b6700..4f4f4e6dd 100644 --- a/apps/api/src/app/export/export.controller.ts +++ b/apps/api/src/app/export/export.controller.ts @@ -2,7 +2,6 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; -import { splitStringToArray } from '@ghostfolio/common/helper'; import { ExportResponse } from '@ghostfolio/common/interfaces'; import type { RequestWithUser } from '@ghostfolio/common/types'; @@ -41,10 +40,9 @@ export class ExportController { @Query('symbol') filterBySymbol?: string, @Query('tags') filterByTags?: string ): Promise { - const activityIds = splitStringToArray(filterByActivityIds); - const activityTypes = filterByTypes - ? (splitStringToArray(filterByTypes) as ActivityType[]) - : undefined; + const activityIds = filterByActivityIds?.split(',') ?? []; + const activityTypes = (filterByTypes?.split(',') as ActivityType[]) ?? []; + const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, diff --git a/apps/api/src/services/api/api.service.ts b/apps/api/src/services/api/api.service.ts index db0e71c04..052119246 100644 --- a/apps/api/src/services/api/api.service.ts +++ b/apps/api/src/services/api/api.service.ts @@ -1,4 +1,3 @@ -import { splitStringToArray } from '@ghostfolio/common/helper'; import { Filter } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; @@ -24,14 +23,14 @@ export class ApiService { filterBySymbol?: string; filterByTags?: string; }): Filter[] { - const accountIds = splitStringToArray(filterByAccounts); - const assetClasses = splitStringToArray(filterByAssetClasses); - const assetSubClasses = splitStringToArray(filterByAssetSubClasses); + const accountIds = filterByAccounts?.split(',') ?? []; + const assetClasses = filterByAssetClasses?.split(',') ?? []; + const assetSubClasses = filterByAssetSubClasses?.split(',') ?? []; const dataSource = filterByDataSource; const holdingType = filterByHoldingType; const searchQuery = filterBySearchQuery?.toLowerCase(); const symbol = filterBySymbol; - const tagIds = splitStringToArray(filterByTags); + const tagIds = filterByTags?.split(',') ?? []; const filters = [ ...accountIds.map((accountId) => { diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts index 4e8c98955..4c1d26b70 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts @@ -141,11 +141,11 @@ export class GfActivitiesPageComponent implements OnInit { this.dataService .fetchActivities({ + range, activityTypes: this.activityTypesFilter.length ? this.activityTypesFilter : undefined, filters: this.userService.getFilters(), - range, skip: this.pageIndex * this.pageSize, sortColumn: this.sortColumn, sortDirection: this.sortDirection, diff --git a/libs/common/src/lib/helper.spec.ts b/libs/common/src/lib/helper.spec.ts index e794799a8..a339c6dab 100644 --- a/libs/common/src/lib/helper.spec.ts +++ b/libs/common/src/lib/helper.spec.ts @@ -1,7 +1,6 @@ import { extractNumberFromString, - getNumberFormatGroup, - splitStringToArray + getNumberFormatGroup } from '@ghostfolio/common/helper'; describe('Helper', () => { @@ -117,22 +116,4 @@ describe('Helper', () => { expect(getNumberFormatGroup()).toEqual(','); }); }); - - describe('splitStringToArray', () => { - it('should split a comma-separated string', () => { - expect(splitStringToArray('a,b,c')).toEqual(['a', 'b', 'c']); - }); - - it('should return a single-element array for a string without commas', () => { - expect(splitStringToArray('a')).toEqual(['a']); - }); - - it('should return an empty array for undefined', () => { - expect(splitStringToArray(undefined)).toEqual([]); - }); - - it('should return an empty array for no argument', () => { - expect(splitStringToArray()).toEqual([]); - }); - }); }); diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 6e5e8e6a4..4db1fcf2d 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -474,7 +474,3 @@ export function resolveMarketCondition( return { emoji: undefined }; } } - -export function splitStringToArray(aString?: string): string[] { - return aString?.split(',') ?? []; -}