fix: signup URL and content type filters
- ?signup=1 now opens clean signup form (clears old messages) - Live filter only shows camera/live/stream (excludes video) - Video filter shows only recorded videos Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
1902515d4a
commit
6d9c96e1bd
|
|
@ -40,13 +40,15 @@ export function matchesContentFilter(post, filter) {
|
||||||
case "links":
|
case "links":
|
||||||
return cat === "news" || ct === "news";
|
return cat === "news" || ct === "news";
|
||||||
case "video":
|
case "video":
|
||||||
return hasVideo || ct === "video" || ct === "camera";
|
// Recorded videos only
|
||||||
|
return ct === "video";
|
||||||
case "image":
|
case "image":
|
||||||
return hasImage && !hasVideo && ct !== "camera";
|
return hasImage && !hasVideo && ct !== "camera" && ct !== "video";
|
||||||
case "text":
|
case "text":
|
||||||
return ct === "post" || ct === "text" || ct === "blog" || cat === "friends";
|
return ct === "post" || ct === "text" || ct === "blog" || cat === "friends";
|
||||||
case "live":
|
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":
|
case "event":
|
||||||
return cat === "event" || cat === "events" || ct === "event";
|
return cat === "event" || cat === "events" || ct === "event";
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -377,13 +377,14 @@ export default function TopBar({ theme = "dark", onChangeTheme, onIslandsClick,
|
||||||
const prefill = (uname || email || last?.username || last?.email || "").trim();
|
const prefill = (uname || email || last?.username || last?.email || "").trim();
|
||||||
if (prefill) setLoginUser(prefill);
|
if (prefill) setLoginUser(prefill);
|
||||||
} else if (truthyParam(signup)) {
|
} else if (truthyParam(signup)) {
|
||||||
const who = (email || uname || last?.email || last?.username || "").trim();
|
// Open FRESH signup form - clear all old data
|
||||||
setSignupInfo("✅ " + t('auth.accountCreatedMsg') + (who ? " (" + who + ")" : ""));
|
try { localStorage.removeItem(LAST_SIGNUP_KEY); } catch {}
|
||||||
setMode("login");
|
setSignupInfo("");
|
||||||
|
setSignupError("");
|
||||||
|
setAuthNotice("");
|
||||||
|
setLoginUser("");
|
||||||
|
setMode("signup");
|
||||||
setShowAuth(true);
|
setShowAuth(true);
|
||||||
|
|
||||||
const prefill = (uname || email || last?.username || last?.email || "").trim();
|
|
||||||
if (prefill) setLoginUser(prefill);
|
|
||||||
} else if (notice) {
|
} else if (notice) {
|
||||||
const msg = decodeURIComponent(notice);
|
const msg = decodeURIComponent(notice);
|
||||||
if (msg && msg.trim()) {
|
if (msg && msg.trim()) {
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,17 @@ export default function MapView({
|
||||||
return []; // Empty = All
|
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
|
// Computed subFilter for backend compatibility
|
||||||
const subFilter = subFilters.length === 0 ? "All" :
|
const subFilter = subFilters.length === 0 ? "All" :
|
||||||
subFilters.length === 1 ? subFilters[0].split(":")[1] : "All";
|
subFilters.length === 1 ? subFilters[0].split(":")[1] : "All";
|
||||||
|
|
|
||||||
|
|
@ -1118,8 +1118,8 @@ export function usePostsEngine({
|
||||||
// Map contentFilter to content_type for API
|
// Map contentFilter to content_type for API
|
||||||
let contentTypeParam = undefined;
|
let contentTypeParam = undefined;
|
||||||
if (contentFilter && contentFilter !== "all") {
|
if (contentFilter && contentFilter !== "all") {
|
||||||
if (contentFilter === "live") contentTypeParam = "live,camera";
|
if (contentFilter === "live") contentTypeParam = "live,camera,stream";
|
||||||
else if (contentFilter === "video") contentTypeParam = "video,camera";
|
else if (contentFilter === "video") contentTypeParam = "video";
|
||||||
else if (contentFilter === "image") contentTypeParam = "image";
|
else if (contentFilter === "image") contentTypeParam = "image";
|
||||||
else if (contentFilter === "text") contentTypeParam = "post";
|
else if (contentFilter === "text") contentTypeParam = "post";
|
||||||
else if (contentFilter === "links") contentTypeParam = "news";
|
else if (contentFilter === "links") contentTypeParam = "news";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue