"use client"; import { Route, Task, Workspace } from "@/lib/types"; import TaskView from "./view/TaskView"; import DocView from "./view/DocView"; import { OutputData } from "@editorjs/editorjs"; const id = (prefix = "t") => `${prefix}_${Math.random().toString(36).slice(2, 9)}`; export default function Router({ route, workspace, setWorkspace, }: { route: Route; workspace: Workspace; setWorkspace: React.Dispatch>; }) { const entityId = route.entity; const entity = entityId ? workspace.entities[entityId] : null; if (!entity || !entityId) return null; const updateEntity = (updater: (e: any) => any) => { setWorkspace((prev) => { const updated = updater(prev.entities[entityId]); return { ...prev, updatedAt: Date.now(), entities: { ...prev.entities, [entityId]: updated, }, }; }); }; switch (entity.type) { case "todo": { const createTask = (statusId: string) => { const task: Task = { id: id(), title: "New task", statusId, tagIds: [], createdAt: new Date().getTime(), updatedAt: new Date().getTime(), }; updateEntity((e) => ({ ...e, tasks: [...e.tasks, task], })); }; const setTasks = (tasks: Task[]) => { updateEntity((e) => ({ ...e, tasks, })); }; return ( ); } case "doc": { const setDoc = (doc: OutputData) => { updateEntity((e) => ({ ...e, doc, })); }; return (
); } default: return null; } }