Browse Source

Respect activity type and date range filter

pull/7492/head
Thomas Kaul 1 month ago
parent
commit
2e47803e14
  1. 14
      apps/api/src/app/activities/activities.controller.ts
  2. 9
      apps/api/src/app/activities/activities.service.ts
  3. 15
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  4. 26
      libs/ui/src/lib/services/data.service.ts

14
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<number> {
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
});
}

9
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<number> {
const { activities } = await this.getActivities({
endDate,
filters,
startDate,
types,
userId,
includeDrafts: true,
userCurrency: undefined,

15
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;

26
libs/ui/src/lib/services/data.service.ts

@ -329,8 +329,24 @@ export class DataService {
return this.http.delete<AccountBalance>(`/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<number>('/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<InfoItem>('/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,

Loading…
Cancel
Save