import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { FormField, FormItem, FormControl, FormMessage, Form, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Spinner } from "@/components/ui/spinner"; import { useEffect } from "react"; import { useSaveFile } from "../-hooks/useSaveFile"; import { FileType } from "@/apis/file"; const formSchema = z.object({ fileName: z .string() .min(1, { message: "目录至少1个字符", }) .max(32, { message: "目录最多32个字符", }) .nonempty({ message: "目录不能为空", }), }); type EditFileDialogProps = { open: boolean; setOpen: (open: boolean) => void; data?: any; parentId?: number; refetch?: () => void; }; export function EditFileDialog({ open, setOpen, data, parentId, refetch, }: EditFileDialogProps) { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { fileName: "", }, }); const { save, saveIsPending } = useSaveFile({ onSuccess: () => { refetch?.(); setOpen(false); }, }); const onSubmit = (values: z.infer) => { save({ ...(data || {}), ...values, parentId, }); }; useEffect(() => { if (open) { form.reset({ fileName: data?.fileName || "" }); } }, [open, data]); return ( {data?.fileType === FileType.DIRECTORY && !data?.id ? "创建目录" : "重命名"}
( )} />
); }