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 { 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 { useShareFile } from "../-hooks/useShareFile"; import { Label } from "@/components/ui/label"; import { Folder, File } from "lucide-react"; import { FileType } from "@/apis/file"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; const formSchema = z.object({ validDays: z.number().or(z.string()), }); type ShareDialogProps = { open: boolean; setOpen: (open: boolean) => void; data?: any; }; export function ShareDialog({ open, setOpen, data }: ShareDialogProps) { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { validDays: 1, }, }); const { share, shareIsPending } = useShareFile({ onSuccess: () => { setOpen(false); }, }); const onSubmit = (values: z.infer) => { share({ userFileId: data.id, validDays: values.validDays, }); }; useEffect(() => { if (open) { form.reset(); } }, [open, data]); return ( 分享文件
{data?.fileType === FileType.FILE ? ( ) : ( )} {data?.fileName}
( )} />
); }