import { useState } from "react"; import type { FormEvent } from "react"; import { lockAdmin, unlockAdmin, useAdmin } from "../lib/admin"; export function AdminButton() { const { enabled } = useAdmin(); const [open, setOpen] = useState(false); const [token, setToken] = useState(""); const [error, setError] = useState(null); const [submitting, setSubmitting] = useState(false); async function onSubmit(event: FormEvent) { event.preventDefault(); setSubmitting(true); setError(null); try { const ok = await unlockAdmin(token); if (!ok) { setError("Invalid token."); return; } setToken(""); setOpen(false); } finally { setSubmitting(false); } } function onLogout() { lockAdmin(); setOpen(false); } return (
{open ? (
{enabled ? ( <>
Admin features are unlocked for this browser tab.
) : (
setToken(event.target.value)} placeholder="paste the admin token" autoComplete="off" autoFocus /> {error ?
{error}
: null}
)}
) : null}
); }