From dd8be14fdbc7c3841bca441bf65884a71101a72d Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 18 Jul 2024 15:21:37 +0200 Subject: [PATCH] fix(filters): make sure filters are replaced case-insensitively before filtering on the server Resolves https://community.vikunja.io/t/filtering-startdate-now-is-invalid/2613 --- frontend/src/helpers/filters.test.ts | 10 ++++++++++ frontend/src/helpers/filters.ts | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/frontend/src/helpers/filters.test.ts b/frontend/src/helpers/filters.test.ts index 8c3267755..3804c8a8e 100644 --- a/frontend/src/helpers/filters.test.ts +++ b/frontend/src/helpers/filters.test.ts @@ -137,6 +137,16 @@ describe('Filter Transformation', () => { expect(transformed).toBe('labels in 2 || labels in l') }) + + it('should correctly transform the cases of fields', () => { + const transformed = transformFilterStringForApi( + 'startdate > now', + nullTitleToIdResolver, + nullTitleToIdResolver, + ) + + expect(transformed).toBe('start_date > now') + }) }) describe('To API', () => { diff --git a/frontend/src/helpers/filters.ts b/frontend/src/helpers/filters.ts index 587d260c6..029d3536b 100644 --- a/frontend/src/helpers/filters.ts +++ b/frontend/src/helpers/filters.ts @@ -66,10 +66,16 @@ export function transformFilterStringForApi( labelResolver: (title: string) => number | null, projectResolver: (title: string) => number | null, ): string { + + filter = filter.trim() - if (filter.trim() === '') { + if (filter === '') { return '' } + + AVAILABLE_FILTER_FIELDS.forEach(f => { + filter = filter.replace(new RegExp(f, 'ig'), f) + }) // Transform labels to ids LABEL_FIELDS.forEach(field => {