import React, { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import EditorPanel from "../components/EditorPanel"; import PreviewPanel from "../components/PreviewPanel"; export default function PageCodeEditor() { const { assignmentId: routeId } = useParams(); const assignmentId = routeId || "52"; const [appName, setAppName] = useState(""); const [code, setCode] = useState("# NOW LOADING"); useEffect(() => { document.title = "Snake Brain Editor"; }, []); useEffect(() => { fetch(`https://assignment-service.fly.dev/student/assignment/${assignmentId}`) .then((res) => { if (!res.ok) throw new Error("Failed to fetch assignment"); return res.json(); }) .then((data) => setAppName(data.appname)) .catch((err) => console.error("Assignment fetch error:", err)); }, [assignmentId]); useEffect(() => { if (!appName) return; fetch(`https://assignment-service.fly.dev/notebook/${appName}`) .then((res) => { if (!res.ok) throw new Error("Failed to fetch notebook"); return res.json(); }) .then((notebook) => { const combined = notebook.cells .filter((cell) => cell.cell_type === "code") .map((cell) => cell.source.join("")) .join("\n\n"); setCode(combined); }) .catch((err) => console.error("Notebook fetch error:", err)); }, [appName]); return (
{/* Python Editor */}

🐍 Snake Brain (Python)

{/* Live Arena */}

🎯 Live Arena Output

Battlesnake Preview

); }