"use client"; import { useState, useEffect } from "react"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { DSLEditor } from "@/components/workflows/dsl-editor"; import { VisualWorkflowBuilder } from "@/components/workflows/visual-builder"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Card } from "@/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { workflowApi } from "@/lib/api/workflows"; import { WorkflowType } from "@/types/workflow"; import { useRouter } from "next/navigation"; import { Loader2 } from "lucide-react"; export default function WorkflowEditPage({ params }: { params: { id: string } }) { const router = useRouter(); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [workflowData, setWorkflowData] = useState({ workflow_name: "", description: "", workflow_type: "CORRESPONDENCE" as WorkflowType, dsl_definition: "", }); useEffect(() => { const fetchWorkflow = async () => { setLoading(true); try { const data = await workflowApi.getWorkflow(parseInt(params.id)); if (data) { setWorkflowData({ workflow_name: data.workflow_name, description: data.description, workflow_type: data.workflow_type, dsl_definition: data.dsl_definition, }); } } catch (error) { console.error("Failed to fetch workflow", error); } finally { setLoading(false); } }; fetchWorkflow(); }, [params.id]); const handleSave = async () => { setSaving(true); try { await workflowApi.updateWorkflow(parseInt(params.id), workflowData); router.push("/admin/workflows"); } catch (error) { console.error("Failed to save workflow", error); alert("Failed to save workflow"); } finally { setSaving(false); } }; if (loading) { return (
); } return (

Edit Workflow

setWorkflowData({ ...workflowData, workflow_name: e.target.value, }) } />