Debounce map fetch and cap feed size
This commit is contained in:
parent
903622e523
commit
5685668d18
|
|
@ -113,8 +113,8 @@ function getPostTimeMs(p) {
|
|||
return d.getTime();
|
||||
}
|
||||
|
||||
const MAX_POOL_POSTS = 150;
|
||||
const MAX_VISIBLE_POSTS = 90;
|
||||
const MAX_POOL_POSTS = 120;
|
||||
const MAX_VISIBLE_POSTS = 70;
|
||||
|
||||
function prunePosts(posts, center, maxCount) {
|
||||
if (!Array.isArray(posts) || posts.length <= maxCount) return posts || [];
|
||||
|
|
@ -151,6 +151,8 @@ export function usePostsEngine({
|
|||
const allPostsRef = useRef([]);
|
||||
const lastFetchRef = useRef({ center: null, radiusKm: null, filterKey: "", timeFilter: "", bounds: null });
|
||||
const delayedFetchRef = useRef(null);
|
||||
const moveDebounceRef = useRef(null);
|
||||
const initialLoadRef = useRef(true);
|
||||
const autoWidenRef = useRef(false);
|
||||
const [mapReady, setMapReady] = useState(false);
|
||||
const clusterModeRef = useRef(false);
|
||||
|
|
@ -656,7 +658,7 @@ export function usePostsEngine({
|
|||
lat,
|
||||
lon: lng,
|
||||
radius_km: radiusKm,
|
||||
limit: 50,
|
||||
limit: 40,
|
||||
bounds,
|
||||
username: username || undefined,
|
||||
});
|
||||
|
|
@ -725,9 +727,21 @@ export function usePostsEngine({
|
|||
}
|
||||
}
|
||||
|
||||
load();
|
||||
const delay = initialLoadRef.current ? 0 : 2400;
|
||||
initialLoadRef.current = false;
|
||||
if (moveDebounceRef.current) {
|
||||
clearTimeout(moveDebounceRef.current);
|
||||
moveDebounceRef.current = null;
|
||||
}
|
||||
moveDebounceRef.current = setTimeout(() => {
|
||||
if (!cancelled) load();
|
||||
}, delay);
|
||||
return () => {
|
||||
cancelled = true;
|
||||
if (moveDebounceRef.current) {
|
||||
try { clearTimeout(moveDebounceRef.current); } catch {}
|
||||
moveDebounceRef.current = null;
|
||||
}
|
||||
if (delayedFetchRef.current) {
|
||||
try { clearTimeout(delayedFetchRef.current); } catch {}
|
||||
delayedFetchRef.current = null;
|
||||
|
|
@ -755,7 +769,7 @@ export function usePostsEngine({
|
|||
lat,
|
||||
lon,
|
||||
radius_km: viewParams?.radiusKm,
|
||||
limit: 80,
|
||||
limit: 60,
|
||||
});
|
||||
if (cancelled) return;
|
||||
const posts = Array.isArray(data?.posts) ? data.posts : [];
|
||||
|
|
|
|||
Loading…
Reference in New Issue