From b8b9804f42aed29b0fa161e01b81b3c8aa4a946c Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Wed, 8 Oct 2025 16:52:31 +0800 Subject: [PATCH 1/4] fix paid date filter is unchecked after refresh --- .../Search/SearchDatePresetFilterBase.tsx | 16 ++++++++++++++-- .../Search/SearchDatePresetFilterBasePage.tsx | 5 ++++- .../Search/SearchPageHeader/SearchFiltersBar.tsx | 8 ++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/components/Search/SearchDatePresetFilterBase.tsx b/src/components/Search/SearchDatePresetFilterBase.tsx index 6c503d2d6532a..2772bc3e640ad 100644 --- a/src/components/Search/SearchDatePresetFilterBase.tsx +++ b/src/components/Search/SearchDatePresetFilterBase.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useImperativeHandle, useMemo, useState} from 'react'; +import React, {useCallback, useEffect, useImperativeHandle, useMemo, useState} from 'react'; import type {Ref} from 'react'; import CalendarPicker from '@components/DatePicker/CalendarPicker'; import MenuItem from '@components/MenuItem'; @@ -42,6 +42,9 @@ type SearchDatePresetFilterBaseProps = { /** The date presets */ presets?: SearchDatePreset[]; + /** Whether the search advanced filters form Onyx data is loading or not */ + isSearchAdvancedFiltersFormLoading: boolean; + /** The ref handle */ ref: Ref; }; @@ -56,7 +59,7 @@ type SearchDatePresetFilterBaseProps = { * - On save: if a date modifier is selected (i.e. user clicked save at the calendar picker) you should `setDateValueOfSelectedDateModifier` otherwise `getDateValues` * - On reset: if a date modifier is selected (i.e. user clicked reset at the calendar picker) you should `clearDateValueOfSelectedDateModifier` otherwise `clearDateValues` */ -function SearchDatePresetFilterBase({defaultDateValues, selectedDateModifier, onSelectDateModifier, presets, ref}: SearchDatePresetFilterBaseProps) { +function SearchDatePresetFilterBase({defaultDateValues, selectedDateModifier, onSelectDateModifier, presets, isSearchAdvancedFiltersFormLoading, ref}: SearchDatePresetFilterBaseProps) { const theme = useTheme(); const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); @@ -65,6 +68,15 @@ function SearchDatePresetFilterBase({defaultDateValues, selectedDateModifier, on const shouldShowHorizontalRule = !!presets?.length; const [dateValues, setDateValues] = useState(defaultDateValues); + + useEffect(() => { + if (isSearchAdvancedFiltersFormLoading) { + return; + } + setDateValues(defaultDateValues); + // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps + }, [isSearchAdvancedFiltersFormLoading]); + const setDateValue = useCallback((dateModifier: SearchDateModifier, value: string | undefined) => { setDateValues((prevDateValues) => { if (dateModifier === CONST.SEARCH.DATE_MODIFIERS.ON && isSearchDatePreset(value)) { diff --git a/src/components/Search/SearchDatePresetFilterBasePage.tsx b/src/components/Search/SearchDatePresetFilterBasePage.tsx index 151ae34b4a66a..83bf7a3efdae3 100644 --- a/src/components/Search/SearchDatePresetFilterBasePage.tsx +++ b/src/components/Search/SearchDatePresetFilterBasePage.tsx @@ -18,6 +18,7 @@ import ROUTES from '@src/ROUTES'; import SearchDatePresetFilterBase from './SearchDatePresetFilterBase'; import type {SearchDatePresetFilterBaseHandle} from './SearchDatePresetFilterBase'; import type {SearchDateFilterKeys} from './types'; +import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue'; type SearchDatePresetFilterBasePageProps = { /** Key used for the date filter */ @@ -32,7 +33,8 @@ function SearchDatePresetFilterBasePage({dateKey, titleKey}: SearchDatePresetFil const {translate} = useLocalize(); const searchDatePresetFilterBaseRef = useRef(null); - const [searchAdvancedFiltersForm] = useOnyx(ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM, {canBeMissing: true}); + const [searchAdvancedFiltersForm, searchAdvancedFiltersFormMetadata] = useOnyx(ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM, {canBeMissing: true}); + const isSearchAdvancedFiltersFormLoading = isLoadingOnyxValue(searchAdvancedFiltersFormMetadata); const [selectedDateModifier, setSelectedDateModifier] = useState(null); const defaultDateValues = { @@ -116,6 +118,7 @@ function SearchDatePresetFilterBasePage({dateKey, titleKey}: SearchDatePresetFil selectedDateModifier={selectedDateModifier} onSelectDateModifier={setSelectedDateModifier} presets={presets} + isSearchAdvancedFiltersFormLoading={isSearchAdvancedFiltersFormLoading} />