import { forwardRef } from "react"; import { useGlobal, useLocal } from "web-utils"; import { EDGlobal, PG } from "../../../logic/ed-global"; import { checkAPI, dev } from "./api-utils"; export const EdApiServer = forwardRef((arg, ref) => { const p = useGlobal(EDGlobal, "EDITOR"); const local = useLocal( { api_url: p.site.config.api_url, status: "offline" as "online" | "offline" | "checking", deployable: false, hasDB: false, }, () => { try { if (dev) { const vdev = JSON.parse(localStorage.getItem("prasi-dev") || "{}"); if (vdev) { dev.url = vdev.url; dev.enabled = vdev.enabled; } } } catch (e) {} check(); } ); const check = () => { local.status = "checking"; local.render(); const res = checkAPI(p); if (res) { local.hasDB = res.hasDB; local.status = "online"; local.deployable = res.deployable; local.render(); } else { local.hasDB = false; local.status = "offline"; local.deployable = false; local.render(); } }; return (
Server URL:
{local.status === "online" && (
ONLINE
)} {local.status === "offline" && (
OFFLINE
)} {local.status === "checking" && (
Checking...
)}
{ local.api_url = e.currentTarget.value; local.render(); }} onFocus={(e) => { if (!e.currentTarget.value) { local.api_url = `https://`; local.render(); } }} type="text" className={cx( "outline-none focus:border-blue-500 flex-1", dev.enabled && "line-through opacity-30" )} onKeyDown={(e) => { if (e.key === "Enter") { e.currentTarget.blur(); } }} onBlur={check} placeholder="https://..." />
{ dev.enabled = !dev.enabled; localStorage.setItem("prasi-dev", JSON.stringify(dev)); local.render(); }} > DEV{" "} {dev.enabled && ON} {!dev.enabled && OFF}
{ dev.url = e.currentTarget.value; localStorage.setItem("prasi-dev", JSON.stringify(dev)); local.render(); }} onKeyDown={(e) => { if (e.key === "Enter") { e.currentTarget.blur(); } }} onBlur={check} />
{local.status === "online" && ( <> {!local.deployable && !local.hasDB && (
This server is not deployable
and do not have DB
)} )}
); });