diff --git a/apps/api/src/app/activities/activities.controller.ts b/apps/api/src/app/activities/activities.controller.ts index 21dabc6395..81af257456 100644 --- a/apps/api/src/app/activities/activities.controller.ts +++ b/apps/api/src/app/activities/activities.controller.ts @@ -61,11 +61,20 @@ export class ActivitiesController { @UseInterceptors(TransformDataSourceInRequestInterceptor) public async deleteActivities( @Query('accounts') filterByAccounts?: string, + @Query('activityTypes') filterByTypes?: string, @Query('assetClasses') filterByAssetClasses?: string, @Query('dataSource') filterByDataSource?: string, + @Query('range') dateRange?: DateRange, @Query('symbol') filterBySymbol?: string, @Query('tags') filterByTags?: string ): Promise { + let endDate: Date; + let startDate: Date; + + if (dateRange) { + ({ endDate, startDate } = getIntervalFromDateRange({ dateRange })); + } + const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, @@ -74,8 +83,13 @@ export class ActivitiesController { filterByTags }); + const types = (filterByTypes?.split(',') as ActivityType[]) ?? []; + return this.activitiesService.deleteActivities({ + endDate, filters, + startDate, + types, userId: this.request.user.id }); } diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 7d6e822c52..da3e99312a 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -361,14 +361,23 @@ export class ActivitiesService { } public async deleteActivities({ + endDate, filters, + startDate, + types, userId }: { + endDate?: Date; filters?: Filter[]; + startDate?: Date; + types?: ActivityType[]; userId: string; }): Promise { const { activities } = await this.getActivities({ + endDate, filters, + startDate, + types, userId, includeDrafts: true, userCurrency: undefined, 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 3362dc5d5d..da0570142e 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 @@ -120,6 +120,10 @@ export class GfActivitiesPageComponent implements OnInit { protected onDeleteActivities() { this.dataService .deleteActivities({ + range: this.getCalendarYearRange(), + activityTypes: this.activityTypesFilter.length + ? this.activityTypesFilter + : undefined, filters: this.userService.getFilters() }) .pipe(takeUntilDestroyed(this.destroyRef)) @@ -277,12 +281,9 @@ export class GfActivitiesPageComponent implements OnInit { this.dataSource = undefined; this.totalItems = undefined; - const dateRange = this.user?.settings?.dateRange; - const range = this.isCalendarYear(dateRange) ? dateRange : undefined; - this.dataService .fetchActivities({ - range, + range: this.getCalendarYearRange(), activityTypes: this.activityTypesFilter.length ? this.activityTypesFilter : undefined, @@ -311,6 +312,12 @@ export class GfActivitiesPageComponent implements OnInit { }); } + private getCalendarYearRange() { + const dateRange = this.user?.settings?.dateRange; + + return this.isCalendarYear(dateRange) ? dateRange : undefined; + } + private isCalendarYear(dateRange?: DateRange) { if (!dateRange) { return false; diff --git a/libs/ui/src/lib/services/data.service.ts b/libs/ui/src/lib/services/data.service.ts index 23c654ae61..16f93fef89 100644 --- a/libs/ui/src/lib/services/data.service.ts +++ b/libs/ui/src/lib/services/data.service.ts @@ -329,8 +329,24 @@ export class DataService { return this.http.delete(`/api/v1/account-balance/${aId}`); } - public deleteActivities({ filters }: { filters?: Filter[] }) { - const params = this.buildFiltersAsQueryParams({ filters }); + public deleteActivities({ + activityTypes, + filters, + range + }: { + activityTypes?: string[]; + filters?: Filter[]; + range?: DateRange; + }) { + let params = this.buildFiltersAsQueryParams({ filters }); + + if (activityTypes?.length) { + params = params.append('activityTypes', activityTypes.join(',')); + } + + if (range) { + params = params.append('range', range); + } return this.http.delete('/api/v1/activities', { params }); } @@ -509,8 +525,7 @@ export class DataService { public fetchInfo(): InfoItem { const info = cloneDeep((window as any).info); const utmSource = window.localStorage.getItem('utm_source') as - | 'ios' - | 'trusted-web-activity'; + 'ios' | 'trusted-web-activity'; info.globalPermissions = filterGlobalPermissions( info.globalPermissions, @@ -949,8 +964,7 @@ export class DataService { public updateInfo() { this.http.get('/api/v1/info').subscribe((info) => { const utmSource = window.localStorage.getItem('utm_source') as - | 'ios' - | 'trusted-web-activity'; + 'ios' | 'trusted-web-activity'; info.globalPermissions = filterGlobalPermissions( info.globalPermissions,