Fix filter changes not triggering refetch

- 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 <noreply@anthropic.com>
This commit is contained in:
SocioWire 2026-01-11 08:08:30 +00:00
parent 01e3ef2362
commit bb0a5187b7
2 changed files with 10 additions and 2 deletions

View File

@ -507,7 +507,9 @@ export default function MapView({
mapRef, mapRef,
viewParams, viewParams,
mainFilter, mainFilter,
mainFilters,
subFilter, subFilter,
subFilters,
contentFilter, contentFilter,
timeHours, timeHours,
searchQuery, searchQuery,

View File

@ -373,7 +373,9 @@ export function usePostsEngine({
mapRef, mapRef,
viewParams, viewParams,
mainFilter, mainFilter,
mainFilters = [], // Full array for cache key comparison
subFilter, subFilter,
subFilters = [], // Full array for cache key comparison
contentFilter = "all", contentFilter = "all",
timeHours, timeHours,
searchQuery, searchQuery,
@ -1018,7 +1020,10 @@ export function usePostsEngine({
const [lng, lat] = resolvedView.center; const [lng, lat] = resolvedView.center;
const radiusKm = resolvedView.radiusKm || 750; 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 currentKey = `${filterKey}|${timeHours}`;
const reqId = ++requestSeqRef.current; const reqId = ++requestSeqRef.current;
let bounds = null; let bounds = null;
@ -1218,7 +1223,8 @@ export function usePostsEngine({
delayedFetchRef.current = null; 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(() => { useEffect(() => {
const q = (searchQuery || "").trim(); const q = (searchQuery || "").trim();