diff --git a/src/components/Filters/ContentFilters.jsx b/src/components/Filters/ContentFilters.jsx index 31922dd..4ad260e 100644 --- a/src/components/Filters/ContentFilters.jsx +++ b/src/components/Filters/ContentFilters.jsx @@ -40,13 +40,15 @@ export function matchesContentFilter(post, filter) { case "links": return cat === "news" || ct === "news"; case "video": - return hasVideo || ct === "video" || ct === "camera"; + // Recorded videos only + return ct === "video"; case "image": - return hasImage && !hasVideo && ct !== "camera"; + return hasImage && !hasVideo && ct !== "camera" && ct !== "video"; case "text": return ct === "post" || ct === "text" || ct === "blog" || cat === "friends"; case "live": - return ct === "live" || ct === "stream" || ct === "camera" || hasVideo; + // Only live content: cameras (quebec511), live streams - NOT recorded videos + return ct === "live" || ct === "stream" || ct === "camera"; case "event": return cat === "event" || cat === "events" || ct === "event"; default: diff --git a/src/components/Layout/TopBar.jsx b/src/components/Layout/TopBar.jsx index 94c4670..f2e8dd8 100644 --- a/src/components/Layout/TopBar.jsx +++ b/src/components/Layout/TopBar.jsx @@ -377,13 +377,14 @@ export default function TopBar({ theme = "dark", onChangeTheme, onIslandsClick, const prefill = (uname || email || last?.username || last?.email || "").trim(); if (prefill) setLoginUser(prefill); } else if (truthyParam(signup)) { - const who = (email || uname || last?.email || last?.username || "").trim(); - setSignupInfo("✅ " + t('auth.accountCreatedMsg') + (who ? " (" + who + ")" : "")); - setMode("login"); + // Open FRESH signup form - clear all old data + try { localStorage.removeItem(LAST_SIGNUP_KEY); } catch {} + setSignupInfo(""); + setSignupError(""); + setAuthNotice(""); + setLoginUser(""); + setMode("signup"); setShowAuth(true); - - const prefill = (uname || email || last?.username || last?.email || "").trim(); - if (prefill) setLoginUser(prefill); } else if (notice) { const msg = decodeURIComponent(notice); if (msg && msg.trim()) { diff --git a/src/components/Map/MapView.jsx b/src/components/Map/MapView.jsx index 3f51667..1b66013 100644 --- a/src/components/Map/MapView.jsx +++ b/src/components/Map/MapView.jsx @@ -203,6 +203,17 @@ export default function MapView({ return []; // Empty = All }); + // Content type filter: all, link, picture, live (camera/live/stream) + const CONTENT_TYPE_KEY = "sociowire:contentType"; + const [contentTypeFilter, setContentTypeFilter] = useState(() => { + try { + return localStorage.getItem(CONTENT_TYPE_KEY) || "all"; + } catch { return "all"; } + }); + useEffect(() => { + localStorage.setItem(CONTENT_TYPE_KEY, contentTypeFilter); + }, [contentTypeFilter]); + // Computed subFilter for backend compatibility const subFilter = subFilters.length === 0 ? "All" : subFilters.length === 1 ? subFilters[0].split(":")[1] : "All"; diff --git a/src/components/Map/usePostsEngine.js b/src/components/Map/usePostsEngine.js index 9d669c4..0ee54bc 100644 --- a/src/components/Map/usePostsEngine.js +++ b/src/components/Map/usePostsEngine.js @@ -1118,8 +1118,8 @@ export function usePostsEngine({ // Map contentFilter to content_type for API let contentTypeParam = undefined; if (contentFilter && contentFilter !== "all") { - if (contentFilter === "live") contentTypeParam = "live,camera"; - else if (contentFilter === "video") contentTypeParam = "video,camera"; + if (contentFilter === "live") contentTypeParam = "live,camera,stream"; + else if (contentFilter === "video") contentTypeParam = "video"; else if (contentFilter === "image") contentTypeParam = "image"; else if (contentFilter === "text") contentTypeParam = "post"; else if (contentFilter === "links") contentTypeParam = "news";