// Zektyc Social β Router v3 (CSP-safe) (function() { "use strict"; window._socialRender = function() { switch (ZS.view) { case "login": renderLogin(); break; case "signup": renderSignup(); break; case "privacy-choice": renderPrivacyChoice(); break; case "profile": renderProfile(); break; case "profile-view": renderProfileView(ZS.viewData); break; case "settings": renderSettings(); break; case "post": _renderNewPost(); break; case "community": renderCommunity(); break; case "messages": renderMessages(); break; case "chat": renderChat(ZS.viewData); break; case "notifications": renderNotifications(); break; case "mod": renderMod(); break; default: renderFeed(); break; } var nav = document.getElementById("socialHeaderNav"); if (nav) nav.classList.remove("open"); ZS._navOpen = false; if (typeof _applyAvatarStyles === "function") _applyAvatarStyles(); }; function _renderNewPost() { if (!ZS.user) { ZS.navigate("login"); return; } var avatarHtml = ZS.user.avatarUrl ? '
' + ZS.icon("arrowLeft") + ' ' + ZS.t("Retour au fil", "Back to feed") + '
'; ZS.renderShell(null, html, null); document.getElementById("fullComposeVis").value = ZS.user.privacyLevel || "connections_only"; var ta = document.getElementById("fullComposeText"); if (ta) ta.focus(); } window.submitFullPost = async function() { var textarea = document.getElementById("fullComposeText"); if (!textarea || !textarea.value.trim()) return; var vis = document.getElementById("fullComposeVis").value; var data = await ZS.api("POST", "/api/social/posts", { content: textarea.value.trim(), visibility: vis }); if (data.error) { alert(data.error); return; } ZS.navigate("feed"); }; // Init window.addEventListener("popstate", function(e) { var parsed = e.state && e.state.view ? e.state : ZS._parsePath(); ZS.view = parsed.view; ZS.viewData = parsed.data; if (window._socialRender) window._socialRender(); }); ZS.checkSession().then(function() { var parsed = ZS._parsePath(); if (parsed.view !== "feed" || parsed.data) { ZS.view = parsed.view; ZS.viewData = parsed.data; } ZS.navigate(ZS.view, ZS.viewData); }); })();