From ca0dc030ade5f1c941a66437e2f228bdda73d546 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 23 Oct 2024 15:08:59 +0100 Subject: [PATCH 1/4] Make sure processSearchFilters handles an undefined input. --- packages/shared-core/src/utils.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/shared-core/src/utils.ts b/packages/shared-core/src/utils.ts index 5db4ead1dc..8e22c10c15 100644 --- a/packages/shared-core/src/utils.ts +++ b/packages/shared-core/src/utils.ts @@ -138,9 +138,16 @@ export function isSupportedUserSearch(query: SearchFilters) { return true } -export const processSearchFilters = ( +export function processSearchFilters(filterArray: undefined): undefined +export function processSearchFilters( filterArray: LegacyFilter[] -): Required => { +): Required +export function processSearchFilters( + filterArray?: LegacyFilter[] +): Required | undefined { + if (!filterArray) { + return undefined + } const { allOr, onEmptyFilter, filters } = splitFiltersArray(filterArray) return { logicalOperator: UILogicalOperator.ALL, From 9ebd890c04902dcb2d810c307e46cef004ef8980 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 23 Oct 2024 15:13:58 +0100 Subject: [PATCH 2/4] Handle empty arrays too. --- packages/shared-core/src/utils.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/shared-core/src/utils.ts b/packages/shared-core/src/utils.ts index 8e22c10c15..01afbc2539 100644 --- a/packages/shared-core/src/utils.ts +++ b/packages/shared-core/src/utils.ts @@ -135,17 +135,19 @@ export function isSupportedUserSearch(query: SearchFilters) { return false } } + return true } export function processSearchFilters(filterArray: undefined): undefined +export function processSearchFilters(filterArray: []): undefined export function processSearchFilters( filterArray: LegacyFilter[] ): Required export function processSearchFilters( filterArray?: LegacyFilter[] ): Required | undefined { - if (!filterArray) { + if (!filterArray || filterArray.length === 0) { return undefined } const { allOr, onEmptyFilter, filters } = splitFiltersArray(filterArray) From f2a844c3b5606e39257f64f86ce37e0e3ed20626 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 23 Oct 2024 15:24:32 +0100 Subject: [PATCH 3/4] Fix test. --- packages/shared-core/src/filters.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared-core/src/filters.ts b/packages/shared-core/src/filters.ts index e0703321e8..e6cab22911 100644 --- a/packages/shared-core/src/filters.ts +++ b/packages/shared-core/src/filters.ts @@ -467,7 +467,7 @@ export function buildQuery( } if (Array.isArray(filter)) { - filter = processSearchFilters(filter) + filter = processSearchFilters(filter) ?? [] } const operator = logicalOperatorFromUI( From f7b84ca7eab2d9be82ff84b9e620fc8318b96aec Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 23 Oct 2024 15:32:07 +0100 Subject: [PATCH 4/4] Fix some type skullduggery. --- packages/shared-core/src/filters.ts | 13 ++++++------- packages/shared-core/src/utils.ts | 5 ----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/shared-core/src/filters.ts b/packages/shared-core/src/filters.ts index e6cab22911..003e6b5082 100644 --- a/packages/shared-core/src/filters.ts +++ b/packages/shared-core/src/filters.ts @@ -455,19 +455,18 @@ export function splitFiltersArray(filters: LegacyFilter[]) { * Legacy support remains for the old **SearchFilter[]** format. * These will be migrated to an appropriate **SearchFilters** object, if encountered */ -export function buildQuery(filter: undefined): undefined -export function buildQuery( - filter: UISearchFilter | LegacyFilter[] -): SearchFilters export function buildQuery( filter?: UISearchFilter | LegacyFilter[] -): SearchFilters | undefined { +): SearchFilters { if (!filter) { - return + return {} } if (Array.isArray(filter)) { - filter = processSearchFilters(filter) ?? [] + filter = processSearchFilters(filter) + if (!filter) { + return {} + } } const operator = logicalOperatorFromUI( diff --git a/packages/shared-core/src/utils.ts b/packages/shared-core/src/utils.ts index 01afbc2539..0e49db9c7c 100644 --- a/packages/shared-core/src/utils.ts +++ b/packages/shared-core/src/utils.ts @@ -139,11 +139,6 @@ export function isSupportedUserSearch(query: SearchFilters) { return true } -export function processSearchFilters(filterArray: undefined): undefined -export function processSearchFilters(filterArray: []): undefined -export function processSearchFilters( - filterArray: LegacyFilter[] -): Required export function processSearchFilters( filterArray?: LegacyFilter[] ): Required | undefined {