diff --git a/src/api/client.js b/src/api/client.js index a235be2..c8a8918 100644 --- a/src/api/client.js +++ b/src/api/client.js @@ -289,6 +289,7 @@ export async function fetchSmartFeed(params = {}) { if (typeof params.lon === "number") qs.set("lon", String(params.lon)); if (typeof params.radius_km === "number") qs.set("radius_km", String(params.radius_km)); if (typeof params.limit === "number") qs.set("limit", String(params.limit)); + if (typeof params.zoom === "number") qs.set("zoom", String(params.zoom)); // NEW: Screen bounds for on-screen prioritization if (params.bounds) { diff --git a/src/components/Map/usePostsEngine.js b/src/components/Map/usePostsEngine.js index 52342a5..e8de524 100644 --- a/src/components/Map/usePostsEngine.js +++ b/src/components/Map/usePostsEngine.js @@ -654,60 +654,16 @@ export function usePostsEngine({ subFilter && subFilter.toUpperCase() !== "ALL" && subFilter !== "All" ? subFilter : ""; // Use smart feed for personalized, trending posts + const zoom = typeof mapObj?.getZoom === "function" ? mapObj.getZoom() : undefined; let newPosts = await fetchSmartFeed({ lat, lon: lng, radius_km: radiusKm, - limit: 40, + limit: 50, + zoom, bounds, username: username || undefined, }); - const timeParam = timeFilter && timeFilter !== "PAST" ? timeFilter : undefined; - const smartCount = Array.isArray(newPosts) ? newPosts.length : 0; - const needFallback = smartCount < 12 || !hasPostsInRadius(newPosts, lat, lng, radiusKm); - if (needFallback) { - const fallbackPosts = await fetchPosts({ - category: catCode || undefined, - subCategory: subCatParam || undefined, - time: timeParam, - lat, - lon: lng, - radiusKm, - limit: 120, - }); - if ((!Array.isArray(fallbackPosts) || fallbackPosts.length === 0) && timeFilter !== "PAST") { - const widenedPosts = await fetchPosts({ - category: catCode || undefined, - subCategory: subCatParam || undefined, - time: "PAST", - lat, - lon: lng, - radiusKm, - limit: 120, - }); - const merged = new Map(); - for (const p of (newPosts || [])) { - const key = getPostKey(p); - if (key) merged.set(key, p); - } - for (const p of (widenedPosts || [])) { - const key = getPostKey(p); - if (key && !merged.has(key)) merged.set(key, p); - } - newPosts = Array.from(merged.values()); - } else { - const merged = new Map(); - for (const p of (newPosts || [])) { - const key = getPostKey(p); - if (key) merged.set(key, p); - } - for (const p of (fallbackPosts || [])) { - const key = getPostKey(p); - if (key && !merged.has(key)) merged.set(key, p); - } - newPosts = Array.from(merged.values()); - } - } if (cancelled) return;