import { getClient, checkStaff, signIn, signInWithGoogle, signOut, fetchRantMetrics, fetchRantSample, escapeHtml, } from "./admin-core.mjs"; var el = function (id) { return document.getElementById(id); }; function show(id, on) { var n = el(id); if (n) n.hidden = !on; } function setLoginFormEnabled(on) { var form = el("form-login"); if (!form) return; form.querySelectorAll("input").forEach(function (inp) { inp.disabled = !on; if (on) { inp.setAttribute("required", "required"); } else { inp.removeAttribute("required"); } }); var btn = el("btn-login-submit"); if (btn) btn.disabled = !on; var gbtn = el("btn-login-google"); if (gbtn) gbtn.disabled = !on; } function updateHeaderNav(dashVisible) { var b = el("btn-show-login"); if (b) b.hidden = !!dashVisible; } function scrollToLogin() { var sec = el("login-section"); if (sec) sec.scrollIntoView({ behavior: "smooth", block: "start" }); var em = el("in-email"); if (em && !em.disabled) em.focus(); } async function refresh() { var err = el("load-error"); if (err) { err.textContent = ""; err.hidden = true; } try { var m = await fetchRantMetrics(); el("r-total").textContent = m.anonymous_vibes_total ?? "—"; el("r-24h").textContent = m.anonymous_vibes_24h ?? "—"; el("r-7d").textContent = m.anonymous_vibes_7d ?? "—"; el("r-note").textContent = m.note || ""; var sample = await fetchRantSample(40); var tbody = el("rant-body"); if (tbody) { tbody.innerHTML = sample .map(function (r) { return ( "" + escapeHtml(String(r.created_at || "").replace("T", " ").slice(0, 19)) + "" + escapeHtml(r.content_preview || "") + "" + (r.has_image ? "yes" : "no") + "" + escapeHtml(String(r.id || "").slice(0, 8)) + "…" ); }) .join(""); } } catch (e) { if (err) { err.textContent = String(e.message || e); err.hidden = false; } } } async function gate() { var hint = el("login-config-hint"); var hasConfig = !!getClient(); if (hint) hint.hidden = hasConfig; if (!hasConfig) { show("config-error", true); setLoginFormEnabled(false); show("login-section", true); show("dash", false); show("denied", false); updateHeaderNav(false); return; } show("config-error", false); setLoginFormEnabled(true); var session = await getClient().auth.getSession(); if (!session.data.session) { show("login-section", true); show("dash", false); show("denied", false); updateHeaderNav(false); return; } var ok = await checkStaff(); if (!ok) { show("login-section", false); show("denied", true); show("dash", false); updateHeaderNav(false); return; } show("denied", false); show("login-section", false); show("dash", true); updateHeaderNav(true); var ue = el("user-email"); if (ue) ue.textContent = session.data.session.user.email || ""; await refresh(); } function wire() { var form = el("form-login"); if (form) { form.addEventListener("submit", async function (ev) { ev.preventDefault(); var le = el("login-error"); if (le) le.textContent = ""; try { await signIn(el("in-email").value, el("in-password").value); await gate(); } catch (e) { if (le) le.textContent = String(e.message || e); } }); } var googleBtn = el("btn-login-google"); if (googleBtn) { googleBtn.addEventListener("click", async function () { var le = el("login-error"); if (le) le.textContent = ""; try { await signInWithGoogle(); } catch (e) { if (le) le.textContent = String(e.message || e); } }); } var lo = el("btn-logout"); if (lo) { lo.addEventListener("click", async function () { await signOut(); show("dash", false); show("denied", false); show("login-section", true); setLoginFormEnabled(!!getClient()); updateHeaderNav(false); }); } var br = el("btn-refresh"); if (br) br.addEventListener("click", function () { refresh(); }); var showBtn = el("btn-show-login"); if (showBtn) { showBtn.addEventListener("click", function () { show("login-section", true); show("denied", false); scrollToLogin(); }); } var retry = el("btn-denied-retry"); if (retry) { retry.addEventListener("click", async function () { await signOut(); show("denied", false); show("login-section", true); setLoginFormEnabled(!!getClient()); updateHeaderNav(false); scrollToLogin(); }); } } wire(); gate().catch(function (e) { console.error(e); var le = el("login-error"); if (le) le.textContent = "Failed to initialize: " + String(e.message || e); show("login-section", true); setLoginFormEnabled(!!getClient()); });