diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 9e143fbef6aae..271418f19eddb 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -403,10 +403,17 @@ function isSearchDatePreset(date: string | undefined): date is SearchDatePreset * Returns whether a given search filter is supported in a given search data type */ function isFilterSupported(filter: SearchAdvancedFiltersKey, type: SearchDataTypes) { - return ALLOWED_TYPE_FILTERS[type].some((supportedFilter) => { - const isReportFieldSupported = supportedFilter === CONST.SEARCH.SYNTAX_FILTER_KEYS.REPORT_FIELD && filter.startsWith(CONST.SEARCH.REPORT_FIELD.GLOBAL_PREFIX); - return supportedFilter === filter || isReportFieldSupported; - }); + const supportedTypeFilters = ALLOWED_TYPE_FILTERS[type]; + if (!supportedTypeFilters) { + return false; + } + if (supportedTypeFilters.has(filter)) { + return true; + } + if (filter.startsWith(CONST.SEARCH.REPORT_FIELD.GLOBAL_PREFIX)) { + return supportedTypeFilters.has(CONST.SEARCH.SYNTAX_FILTER_KEYS.REPORT_FIELD); + } + return false; } /** diff --git a/src/types/form/SearchAdvancedFiltersForm.ts b/src/types/form/SearchAdvancedFiltersForm.ts index 54c33c46ab913..d6eed3641dde7 100644 --- a/src/types/form/SearchAdvancedFiltersForm.ts +++ b/src/types/form/SearchAdvancedFiltersForm.ts @@ -172,8 +172,8 @@ const FILTER_KEYS = { LIMIT: 'limit', } as const; -const ALLOWED_TYPE_FILTERS = { - [CONST.SEARCH.DATA_TYPES.EXPENSE]: [ +const ALLOWED_TYPE_FILTERS: Record> = { + [CONST.SEARCH.DATA_TYPES.EXPENSE]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.STATUS, FILTER_KEYS.FROM, @@ -270,8 +270,8 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.ATTENDEE_NOT, FILTER_KEYS.COLUMNS, FILTER_KEYS.LIMIT, - ], - [CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT]: [ + ]), + [CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.STATUS, FILTER_KEYS.FROM, @@ -326,8 +326,8 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.TITLE_NOT, FILTER_KEYS.REPORT_FIELD, FILTER_KEYS.COLUMNS, - ], - [CONST.SEARCH.DATA_TYPES.INVOICE]: [ + ]), + [CONST.SEARCH.DATA_TYPES.INVOICE]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.STATUS, FILTER_KEYS.FROM, @@ -410,9 +410,9 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.REPORT_FIELD, FILTER_KEYS.TITLE_NOT, FILTER_KEYS.COLUMNS, - ], + ]), - [CONST.SEARCH.DATA_TYPES.TRIP]: [ + [CONST.SEARCH.DATA_TYPES.TRIP]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.STATUS, FILTER_KEYS.FROM, @@ -488,9 +488,9 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.TITLE_NOT, FILTER_KEYS.REPORT_FIELD, FILTER_KEYS.COLUMNS, - ], + ]), - [CONST.SEARCH.DATA_TYPES.CHAT]: [ + [CONST.SEARCH.DATA_TYPES.CHAT]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.FROM, FILTER_KEYS.FROM_NOT, @@ -508,9 +508,9 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.IS_NOT, FILTER_KEYS.HAS, FILTER_KEYS.HAS_NOT, - ], + ]), - [CONST.SEARCH.DATA_TYPES.TASK]: [ + [CONST.SEARCH.DATA_TYPES.TASK]: new Set([ FILTER_KEYS.TYPE, FILTER_KEYS.STATUS, FILTER_KEYS.TITLE, @@ -527,7 +527,7 @@ const ALLOWED_TYPE_FILTERS = { FILTER_KEYS.DATE_NOT, FILTER_KEYS.DATE_AFTER, FILTER_KEYS.DATE_BEFORE, - ], + ]), }; type SearchAdvancedFiltersKey = ValueOf | ReportFieldKey;