"use client"; import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useZodForm } from "@/components/ui/form"; import {Input} from "@/components/ui/input"; import {Form} from "@/components/ui/form"; import {Button} from "@/components/ui/button"; import {useRouter} from "next/navigation"; import {useMutation} from "@tanstack/react-query"; import {TooltipProvider} from "@/components/ui/tooltip"; import {AgentSchema, AgentType} from "@/features/agents/agents.schema"; import {toast} from "sonner"; import {createAgentAction, updateAgentAction} from "@/features/agents/agents.action"; export type agentFormProps = { defaultValues?: AgentType; agentId?: string; onSuccess?: (data: any) => void; }; export const AgentForm = (props: agentFormProps) => { const isCreate = !Boolean(props.defaultValues); const form = useZodForm({ schema: AgentSchema, defaultValues: props.defaultValues, }); const router = useRouter(); const mutation = useMutation({ mutationFn: async (values: AgentType) => { const createAgent = isCreate ? await createAgentAction(values) : await updateAgentAction({ id: props.agentId ?? "-", data: values, }); const data = createAgent?.data?.data; if (createAgent?.serverError || !data) { toast.error(createAgent?.serverError); return; } toast.success(`Success ${isCreate ? "creating" : "updating"} agent`); router.refresh(); if (props.onSuccess) { props.onSuccess(data); } else { router.push(`/dashboard/agents/${data.id}`); } }, }); return (
{ await mutation.mutateAsync(values); }} > ( Name Your agent project name )} /> ( Description Enter your project agent description )} />
); };