import { useEffect } from "react"; import { useGlobal, useLocal } from "web-utils"; import { isLocalhost } from "../../../../../utils/ui/is-localhost"; import { Loading } from "../../../../../utils/ui/loading"; import { Modal } from "../../../../../utils/ui/modal"; import { Popover } from "../../../../../utils/ui/popover"; import { Tooltip } from "../../../../../utils/ui/tooltip"; import { EDGlobal } from "../../../logic/ed-global"; import { iconChevronDown, iconDownload, iconNewTab, iconScrollOff, iconScrollOn, iconUpload, } from "./icons"; import { CodeNameItem, CodeNameList } from "./name-list"; export const code = { mode: "" as "" | "old" | "new", }; export const EdPopCode = () => { const p = useGlobal(EDGlobal, "EDITOR"); useEffect(() => { (async () => { if (code.mode === "new") { p.ui.popup.code.init = true; } })(); }, [p.ui.popup.code.open]); useEffect(() => { if (code.mode === "" && p.site.id) { _db.code.findFirst({ where: { id_site: p.site.id } }).then((e) => { code.mode = e ? "new" : "old"; if (localStorage.vsc_opened === "yes") { localStorage.removeItem("vsc_opened"); p.ui.popup.code.open = true; } p.render(); }); } }, [p.site.id]); if (p.ui.popup.code.startup_status === "init" && p.sync?.code.action) { p.ui.popup.code.startup_status = "loading"; p.sync.code .action({ type: "startup-check", site_id: p.site.id }) .then((res) => { if (res) { if (res.type === "startup-check") { p.ui.popup.code.startup_status = res.status; p.render(); } } }); } return ( { localStorage.removeItem("vsc_opened"); if (!open) { p.ui.popup.code.startup_status = "init"; p.ui.popup.code.open = false; p.render(); } }} >
{!code.mode && } {code.mode === "new" && } {code.mode === "old" && (
This site still using old code
{ if ( confirm( "Old code will not load, are you sure want to upgrade ?" ) ) { code.mode = "new"; _db.code.create({ data: { id_site: p.site.id, name: "site" }, }); p.ui.popup.code.open = false; p.render(); } }} className="border border-blue-500 cursor-pointer bg-blue-100 p-2 hover:bg-blue-200" > Upgrade to New Code Project
Warning: old code will not load once upgraded.
)}
); }; const CodeBody = () => { const p = useGlobal(EDGlobal, "EDITOR"); const local = useLocal({ namePicker: false, codeAssign: false, }); const vscode_url = isLocalhost() ? "http://localhost:3000?" : "https://prasi-vsc.avolut.com/?tkn=prasi&"; const code_mode = p.site.code.mode; return (
{/* { local.namePicker = false; p.ui.popup.code.name = e.name; p.render(); }} /> } popoverClassName="bg-white shadow-md" className={cx( "flex items-center px-2 w-[200px] hover:bg-blue-50 space-x-1", "cursor-pointer justify-between border-r " )} open={local.namePicker} onOpenChange={(open) => { local.namePicker = open; local.render(); }} >
*/} {/* { p.ui.popup.code.show_log = !p.ui.popup.code.show_log; p.render(); }} > {p.ui.popup.code.show_log && (
)}
*/} {p.ui.popup.code.startup_status !== "disabled" && ( {["loading", "init"].includes(p.ui.popup.code.startup_status) ? (
) : (
{ if ( p.ui.popup.code.startup_status === "stopped" && p.sync ) { p.ui.popup.code.startup_status = "loading"; p.render(); p.sync.code .action({ type: "startup-run", site_id: p.site.id }) .then(() => { p.sync?.code .action({ type: "startup-check", site_id: p.site.id, }) .then((res) => { if (res) { if (res.type === "startup-check") { p.ui.popup.code.startup_status = res.status; p.render(); } } }); }); } else { p.ui.popup.code.startup_status = "loading"; p.render(); p.sync?.code .action({ type: "startup-stop", site_id: p.site.id }) .then(() => { p.sync?.code .action({ type: "startup-check", site_id: p.site.id, }) .then((res) => { if (res) { if (res.type === "startup-check") { p.ui.popup.code.startup_status = res.status; p.render(); } } }); }); } }} >
)}
)}
{ window.open(`${vscode_url}folder=/site/${p.site.id}/site/src`); }} >
{code_mode === "vsc" && (
{ if ( confirm( "Are you sure want to turn off VSCode?\nThis will enable old npm module" ) ) { localStorage.vsc_opened = "yes"; await _db.site.update({ where: { id: p.site.id }, data: { code_mode: "old" }, }); location.reload(); } }} >
Turn off VSCode
)}
{p.ui.popup.code.show_log && (
{p.ui.popup.code.log || "stdout is empty..."}
)} {code_mode === "vsc" ? (
{!p.ui.popup.code.open ? ( ) : ( <>
Loading VSCode...
)}
) : (
VSCode is turned off
{ if ( confirm( "Are you sure want to turn on VSCode?\nThis will disable old npm module (you can enable it again later)." ) ) { localStorage.vsc_opened = "yes"; await _db.site.update({ where: { id: p.site.id }, data: { code_mode: "vsc" }, }); location.reload(); } }} >
Turn on VSCode
)} {(local.namePicker || local.codeAssign) && (
{ local.namePicker = false; local.codeAssign = false; local.render(); }} >
)}
); };