"use client" import * as React from "react" import { tasks, type Task } from "@/db/schema/tasks" import { zodResolver } from "@hookform/resolvers/zod" import { Loader } from "lucide-react" import { useForm } from "react-hook-form" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { Textarea } from "@/components/ui/textarea" import { modifiTask } from "@/lib//tasks/service" import { updateTaskSchema, type UpdateTaskSchema } from "@/lib/tasks/validations" interface UpdateTaskSheetProps extends React.ComponentPropsWithRef { task: Task | null } export function UpdateTaskSheet({ task, ...props }: UpdateTaskSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(updateTaskSchema), defaultValues: { title: task?.title ?? "", label: task?.label, status: task?.status, priority: task?.priority, }, }) function onSubmit(input: UpdateTaskSchema) { startUpdateTransition(async () => { if (!task) return const { error } = await modifiTask({ id: task.id, ...input, }) if (error) { toast.error(error) return } form.reset() props.onOpenChange?.(false) toast.success("Task updated") }) } return ( Update task Update the task details and save the changes
( Title