From bb0a5187b7f76f8a5a852b15ae9395969f4922bb Mon Sep 17 00:00:00 2001 From: SocioWire Date: Sun, 11 Jan 2026 08:08:30 +0000 Subject: [PATCH] Fix filter changes not triggering refetch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add mainFilters/subFilters arrays to usePostsEngine - Update filterKey to use full arrays for comparison - Any filter toggle now triggers fresh API fetch 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/components/Map/MapView.jsx | 2 ++ src/components/Map/usePostsEngine.js | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/Map/MapView.jsx b/src/components/Map/MapView.jsx index 16122ac..efad00d 100644 --- a/src/components/Map/MapView.jsx +++ b/src/components/Map/MapView.jsx @@ -507,7 +507,9 @@ export default function MapView({ mapRef, viewParams, mainFilter, + mainFilters, subFilter, + subFilters, contentFilter, timeHours, searchQuery, diff --git a/src/components/Map/usePostsEngine.js b/src/components/Map/usePostsEngine.js index 37d0a4a..c97e9a5 100644 --- a/src/components/Map/usePostsEngine.js +++ b/src/components/Map/usePostsEngine.js @@ -373,7 +373,9 @@ export function usePostsEngine({ mapRef, viewParams, mainFilter, + mainFilters = [], // Full array for cache key comparison subFilter, + subFilters = [], // Full array for cache key comparison contentFilter = "all", timeHours, searchQuery, @@ -1018,7 +1020,10 @@ export function usePostsEngine({ const [lng, lat] = resolvedView.center; const radiusKm = resolvedView.radiusKm || 750; - const filterKey = `${mainFilter}|${subFilter}`; + // Include full arrays in filterKey so any toggle triggers refetch + const mainKey = mainFilters.length > 0 ? mainFilters.sort().join(",") : mainFilter; + const subKey = subFilters.length > 0 ? subFilters.sort().join(",") : subFilter; + const filterKey = `${mainKey}|${subKey}|${contentFilter}`; const currentKey = `${filterKey}|${timeHours}`; const reqId = ++requestSeqRef.current; let bounds = null; @@ -1218,7 +1223,8 @@ export function usePostsEngine({ delayedFetchRef.current = null; } }; - }, [viewParams, mapReady, mainFilter, subFilter, contentFilter, mapRef, timeHours, expandedElRef, refreshVisibleAndMarkers, computeVisible, onAutoWidenTimeFilter, syncMarkers, username]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [viewParams, mapReady, mainFilter, JSON.stringify(mainFilters), subFilter, JSON.stringify(subFilters), contentFilter, mapRef, timeHours, expandedElRef, refreshVisibleAndMarkers, computeVisible, onAutoWidenTimeFilter, syncMarkers, username]); useEffect(() => { const q = (searchQuery || "").trim();