From 9c8f78ce9a9bd69d9664310e474f29f87fd07885 Mon Sep 17 00:00:00 2001 From: Tomeshwari-02 <179694969+Tomeshwari-02@users.noreply.github.com> Date: Tue, 14 Jul 2026 17:08:49 +0530 Subject: [PATCH] Use stable event listing dependencies --- src/Pages/Events/EventsPage.js | 51 ++++++++++++++++++++--------- src/Pages/Events/useEventListing.js | 6 ++-- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/Pages/Events/EventsPage.js b/src/Pages/Events/EventsPage.js index 86b1cd71f..fdf56bffa 100644 --- a/src/Pages/Events/EventsPage.js +++ b/src/Pages/Events/EventsPage.js @@ -166,7 +166,17 @@ const EventsPage = () => { } const listing = useEventListing(); - const { isLoading } = listing; + const { + isLoading, + setAdvancedFilters, + setCategoryFilter, + setEventsPerPage, + setFilterType, + setSafePage, + setSearchQuery, + setSortType, + setViewMode, + } = listing; const cardSectionRef = useRef(); const hasHydratedFilters = useRef(false); const [filtersHydrated, setFiltersHydrated] = useState(false); @@ -175,8 +185,8 @@ const EventsPage = () => { const debouncedSearchQuery = useDebouncedValue(localSearchInput, 300); useEffect(() => { - listing.setSearchQuery(debouncedSearchQuery); - }, [debouncedSearchQuery]); + setSearchQuery(debouncedSearchQuery); + }, [debouncedSearchQuery, setSearchQuery]); useEffect(() => { if (hasHydratedFilters.current) return; @@ -210,18 +220,29 @@ const EventsPage = () => { if (initialSearch) { setLocalSearchInput(initialSearch); - listing.setSearchQuery(initialSearch); + setSearchQuery(initialSearch); } - listing.setFilterType(filter); - listing.setCategoryFilter(category); - listing.setSortType(sort); - listing.setViewMode(view); - listing.setEventsPerPage(perPage); - listing.setAdvancedFilters(advancedFilters); - if (page !== 1) listing.setSafePage(page); + setFilterType(filter); + setCategoryFilter(category); + setSortType(sort); + setViewMode(view); + setEventsPerPage(perPage); + setAdvancedFilters(advancedFilters); + if (page !== 1) setSafePage(page); hasHydratedFilters.current = true; setFiltersHydrated(true); - }, [searchParams, routeSearchQuery, listing]); + }, [ + searchParams, + routeSearchQuery, + setAdvancedFilters, + setCategoryFilter, + setEventsPerPage, + setFilterType, + setSafePage, + setSearchQuery, + setSortType, + setViewMode, + ]); useEffect(() => { if (!filtersHydrated) return; @@ -273,13 +294,13 @@ const EventsPage = () => { const safeQuery = prepareSafeSearchQuery(routeSearchQuery); if (safeQuery !== listing.searchQuery) { setLocalSearchInput(safeQuery); - listing.setSearchQuery(safeQuery); + setSearchQuery(safeQuery); } }, [ rawSearchParam, routeSearchQuery, listing.searchQuery, - listing.setSearchQuery, + setSearchQuery, ]); const handleSearch = (query = "") => { @@ -437,4 +458,4 @@ const EventsPage = () => { ); }; -export default EventsPage; \ No newline at end of file +export default EventsPage; diff --git a/src/Pages/Events/useEventListing.js b/src/Pages/Events/useEventListing.js index 7db9c247f..4fb41b8a5 100644 --- a/src/Pages/Events/useEventListing.js +++ b/src/Pages/Events/useEventListing.js @@ -178,7 +178,7 @@ const useEventListing = () => { setCurrentPage(1); }, [searchQuery, filterType, sortType, advancedFilters, eventsPerPage]); - const setSafePage = (page) => { + const setSafePage = useCallback((page) => { if (page < 1) { setCurrentPage(1); return; @@ -188,11 +188,11 @@ const useEventListing = () => { return; } setCurrentPage(page); - }; + }, [pagination.totalPages]); const setAdvancedFilters = useCallback((filters) => { setAdvancedFiltersState(normalizeAdvancedFilters(filters)); - }, [setAdvancedFiltersState, normalizeAdvancedFilters]); + }, [setAdvancedFiltersState]); const priceStats = useMemo(() => getPriceStats(events), [events]); const dateRangeStats = useMemo(() => getDateRange(events), [events]);