import { useEffect, useState } from "react"; import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; import { LuArrowLeft, LuPlay, LuSave } from "react-icons/lu"; import { errorMessage } from "../api/client.js"; import { useSaveScript, useScript } from "../api/hooks.js"; import { CodeEditor } from "../components/CodeEditor.jsx"; import { ScriptIcon } from "../components/ScriptIcon.jsx"; import { ScriptMetaPanel } from "../components/ScriptMetaPanel.jsx"; import { NEW_SCRIPT_TEMPLATE, normalizeScriptName } from "../lib/script.js"; import { useNotifications } from "../notifications.jsx"; export function ScriptNewPage() { const navigate = useNavigate(); const location = useLocation(); const [name, setName] = useState(""); const [content, setContent] = useState( location.state?.content ?? NEW_SCRIPT_TEMPLATE, ); const save = useSaveScript(); function onSave(e) { e.preventDefault(); const file = normalizeScriptName(name); if (!file) return; save.mutate( { name: file, content }, { onSuccess: () => navigate(`/scripts/${encodeURIComponent(file)}/edit`), }, ); } function openDryRun() { const file = normalizeScriptName(name); if (!file) return; navigate(`/scripts/${encodeURIComponent(file)}/dry-run`, { state: { content }, }); } return (
Script not found
{errorMessage(save.error)}
) : null}