diff --git a/src/libs/SearchAutocompleteUtils.ts b/src/libs/SearchAutocompleteUtils.ts index e3ec6741b10ad..96c281b3db6f3 100644 --- a/src/libs/SearchAutocompleteUtils.ts +++ b/src/libs/SearchAutocompleteUtils.ts @@ -193,7 +193,8 @@ function filterOutRangesWithCorrectValue( case CONST.SEARCH.SYNTAX_FILTER_KEYS.ACTION: return actionList.includes(range.value); case CONST.SEARCH.SYNTAX_FILTER_KEYS.CATEGORY: - return categoryList.get().includes(range.value); + // Treat the empty category as selected if any of its synonyms (e.g., "none", "uncategorized") appear in filterValues. + return categoryList.get().includes(range.value) || CONST.SEARCH.CATEGORY_EMPTY_VALUE.split(',').some((emptyVal) => emptyVal.toLowerCase() === range.value.toLowerCase()); case CONST.SEARCH.SYNTAX_FILTER_KEYS.TAG: return tagList.get().includes(range.value); case CONST.SEARCH.SYNTAX_ROOT_KEYS.GROUP_BY: diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index bdc8c3142113a..80bded2110e2b 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -835,8 +835,9 @@ function buildFilterFormValuesFromQuery( .flat(); const uniqueCategories = new Set(categories); const emptyCategories = CONST.SEARCH.CATEGORY_EMPTY_VALUE.split(','); - const hasEmptyCategoriesInFilter = emptyCategories.every((category) => filterValues.includes(category)); - // We split CATEGORY_EMPTY_VALUE into individual values to detect both are present in filterValues. + // Return true if the value is a known category or one of the empty-category synonyms (e.g., 'none', 'uncategorized'). + const filterValuesLower = new Set(filterValues.map((v) => v.toLowerCase())); + const hasEmptyCategoriesInFilter = emptyCategories.some((category) => filterValuesLower.has(category.toLowerCase())); // If empty categories are found, append the CATEGORY_EMPTY_VALUE to filtersForm. filtersForm[key as typeof filterKey] = filterValues.filter((name) => uniqueCategories.has(name)).concat(hasEmptyCategoriesInFilter ? [CONST.SEARCH.CATEGORY_EMPTY_VALUE] : []); }