1
0

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
This commit is contained in:
kolaente 2024-07-18 15:21:37 +02:00
parent 12474e5be6
commit dd8be14fdb
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
2 changed files with 17 additions and 1 deletions

View File

@ -137,6 +137,16 @@ describe('Filter Transformation', () => {
expect(transformed).toBe('labels in 2 || labels in l') 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', () => { describe('To API', () => {

View File

@ -66,10 +66,16 @@ export function transformFilterStringForApi(
labelResolver: (title: string) => number | null, labelResolver: (title: string) => number | null,
projectResolver: (title: string) => number | null, projectResolver: (title: string) => number | null,
): string { ): string {
filter = filter.trim()
if (filter.trim() === '') { if (filter === '') {
return '' return ''
} }
AVAILABLE_FILTER_FIELDS.forEach(f => {
filter = filter.replace(new RegExp(f, 'ig'), f)
})
// Transform labels to ids // Transform labels to ids
LABEL_FIELDS.forEach(field => { LABEL_FIELDS.forEach(field => {