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 { CodeAssign } from "./assign"; import { iconChevronDown, iconGear, iconLoading, iconLog, iconTrash, } from "./icons"; import { CodeNameItem, CodeNameList, codeName } from "./name-list"; export const code = { mode: "" as "" | "old" | "new", }; export const EdPopCode = () => { const p = useGlobal(EDGlobal, "EDITOR"); useEffect(() => { (async () => { if (code.mode === "new") { if (p.ui.popup.code.open) { const id_code = await p.sync.activity("site", { action: p.ui.popup.code.open ? "open" : "close", id: p.site.id, type: "code", name: p.ui.popup.code.name, }); if (id_code) { p.ui.popup.code.id = id_code; p.render(); } } p.ui.popup.code.init = true; } })(); }, [p.ui.popup.code.open]); useEffect(() => { if (code.mode === "") { db.code.findFirst({ where: { id_site: p.site.id } }).then((e) => { code.mode = e ? "new" : "old"; p.render(); }); } }, []); return ( { if (!open) { 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"; 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&"; return (
{ local.namePicker = false; p.ui.popup.code.name = e.name; p.ui.popup.code.id = ""; p.render(); const id_code = await p.sync.activity("site", { action: "open", id: p.site.id, type: "code", name: p.ui.popup.code.name, }); if (id_code) { p.ui.popup.code.id = id_code; 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", )} open={local.namePicker} onOpenChange={(open) => { local.namePicker = open; local.render(); }} >
{p.ui.popup.code.name !== "site" && p.ui.popup.code.name !== "SSR" && ( <> { if ( prompt( "Are you sure want to delete this code?\ntype 'yes' to confirm:", ) === "yes" ) { await db.code.delete({ where: { id: p.ui.popup.code.id }, }); codeName.list = codeName.list.filter( (e) => e.id !== p.ui.popup.code.id, ); p.ui.popup.code.name = codeName.list[0].name; p.ui.popup.code.id = codeName.list[0].id; p.render(); } }} >
{ local.codeAssign = open; local.render(); }} backdrop={false} placement="bottom" popoverClassName="p-0 shadow-lg bg-white" content={ { local.codeAssign = false; local.render(); }} id_code={p.ui.popup.code.id} /> } className="flex items-center border-l relative hover:bg-blue-50 cursor-pointer px-2 transition-all" >
)} { p.ui.popup.code.show_log = !p.ui.popup.code.show_log; p.render(); }} > {p.ui.popup.code.show_log && (
)}
{p.ui.popup.code.show_log && (
{p.ui.popup.code.log || "stdout is empty..."}
)}
{!p.ui.popup.code.open || !p.ui.popup.code.id ? ( ) : ( <>
Loading VSCode...
)}
{(local.namePicker || local.codeAssign) && (
{ local.namePicker = false; local.codeAssign = false; local.render(); }} >
)}
); };