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());
});