Skip to content

Commit 9e15e3a

Browse files
committed
fix: reset all search filters when type is changed
1 parent 68604ce commit 9e15e3a

2 files changed

Lines changed: 28 additions & 7 deletions

File tree

src/components/Search/SearchPageHeader/SearchFiltersBar.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,16 @@ function SearchFiltersBar({queryJSON, headerButtonsOptions}: SearchFiltersBarPro
8989

9090
// If the type has changed, reset the status so we dont have an invalid status selected
9191
if (updatedFilterFormValues.type !== filterFormValues.type) {
92-
updatedFilterFormValues.status = CONST.SEARCH.STATUS.EXPENSE.ALL;
92+
Object.keys(updatedFilterFormValues)
93+
.filter((key) => key !== CONST.SEARCH.SYNTAX_FILTER_KEYS.TYPE)
94+
.forEach((key) => {
95+
if (key === CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS) {
96+
updatedFilterFormValues[key] = CONST.SEARCH.STATUS.EXPENSE.ALL;
97+
return;
98+
}
99+
100+
updatedFilterFormValues[key as keyof SearchAdvancedFiltersForm] = undefined;
101+
});
93102
}
94103

95104
const filterString = buildQueryStringFromFilterFormValues(updatedFilterFormValues);

src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTypePage.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ import {getTypeOptions} from '@libs/SearchUIUtils';
1616
import CONST from '@src/CONST';
1717
import ONYXKEYS from '@src/ONYXKEYS';
1818
import ROUTES from '@src/ROUTES';
19+
import type {SearchAdvancedFiltersForm} from '@src/types/form';
1920
import type {SearchDataTypes} from '@src/types/onyx/SearchResults';
21+
import type Nullable from '@src/types/utils/Nullable';
2022

2123
function SearchFiltersTypePage() {
2224
const styles = useThemeStyles();
@@ -44,16 +46,26 @@ function SearchFiltersTypePage() {
4446

4547
const applyChanges = useCallback(() => {
4648
const hasTypeChanged = selectedItem !== searchAdvancedFiltersForm?.type;
47-
const updatedFilters = {
49+
const updatedFilters: Partial<Nullable<SearchAdvancedFiltersForm>> = {
4850
type: selectedItem,
49-
...(hasTypeChanged && {
50-
groupBy: null,
51-
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
52-
}),
5351
};
52+
53+
if (hasTypeChanged) {
54+
Object.keys(searchAdvancedFiltersForm ?? {})
55+
.filter((key) => key !== CONST.SEARCH.SYNTAX_FILTER_KEYS.TYPE)
56+
.forEach((key) => {
57+
if (key === CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS) {
58+
updatedFilters[key] = CONST.SEARCH.STATUS.EXPENSE.ALL;
59+
return;
60+
}
61+
62+
updatedFilters[key as keyof SearchAdvancedFiltersForm] = null;
63+
});
64+
}
65+
5466
updateAdvancedFilters(updatedFilters);
5567
Navigation.goBack(ROUTES.SEARCH_ADVANCED_FILTERS);
56-
}, [searchAdvancedFiltersForm?.type, selectedItem]);
68+
}, [searchAdvancedFiltersForm, selectedItem]);
5769

5870
return (
5971
<ScreenWrapper

0 commit comments

Comments
 (0)