"use client"; import { SubmitHandler, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { projectEditSchema, ProjectEditSchema } from "@/types/schemas/project.schema"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, FormDescription } from "@/components/ui/form"; import { DateTimePicker } from "@/components/ui/datetime-picker"; import { MdxEditor } from "@/components/MarkdownEditor"; import { editProjectById } from "@/lib/data/projectMutate"; import toast from "react-hot-toast"; import { useRouter } from "next/navigation"; import { createSupabaseClient } from "@/lib/supabase/clientComponentClient"; import { useState } from "react"; export default function EditProjectForm({ projectData, projectId, }: { projectData: ProjectEditSchema; projectId: number; }) { const router = useRouter(); const client = createSupabaseClient(); const projectForm = useForm({ resolver: zodResolver(projectEditSchema), defaultValues: { project_name: projectData.project_name || "", project_short_description: projectData.project_short_description || "", project_description: projectData.project_description || "", deadline: projectData.deadline ? projectData.deadline : undefined, }, }); const [deadline, setDeadline] = useState(projectData.deadline); const [descriptionContent, setDescriptionContent] = useState(projectData.project_description || ""); const onSubmit: SubmitHandler = async (updates) => { try { const updatedData = { ...updates, deadline: deadline ? new Date(deadline).toISOString() : undefined, project_description: descriptionContent, }; const result = await editProjectById(client, projectId, updatedData); if (result) { toast.success("Project updated successfully!"); router.push(`/deals/${projectId}`); } else { toast.error("No fields to update!"); } } catch (error) { toast.error("Error updating project!"); console.error("Error updating project:", error); } }; return (
( Project Name Provide the name of the project. {projectForm.formState.errors.project_name && ( {projectForm.formState.errors.project_name.message} )} )} /> ( Short Description