"use client" import * as React from "react" import { type Row } from "@tanstack/react-table" import { Loader, Send } from "lucide-react" import { toast } from "sonner" import { useMediaQuery } from "@/hooks/use-media-query" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { Vendor } from "@/db/schema/vendors" import { requestInfo } from "../service" import { useSession } from "next-auth/react" interface RequestInfoDialogProps extends React.ComponentPropsWithoutRef { vendors: Row["original"][] showTrigger?: boolean onSuccess?: () => void } export function RequestInfoDialog({ vendors, showTrigger = true, onSuccess, ...props }: RequestInfoDialogProps) { const [isRequestPending, startRequestTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") const { data: session } = useSession() function onApprove() { if (!session?.user?.id) { toast.error("사용자 인증 정보를 찾을 수 없습니다.") return } startRequestTransition(async () => { const { error, success } = await requestInfo({ ids: vendors.map((vendor) => vendor.id), userId: Number(session.user.id) }) if (error) { toast.error(error) return } props.onOpenChange?.(false) toast.success("추가 정보 요청이 성공적으로 협력업체에게 발송되었습니다.") onSuccess?.() }) } if (isDesktop) { return ( {showTrigger ? ( ) : null} 협력업체 추가 정보 요청 확인 {vendors.length} {vendors.length === 1 ? "개의 협력업체" : "개의 협력업체들"}에게 추가 정보를 요청하시겠습니까?

요청시 협력업체에게 이메일이 발송되며, 협력업체는 별도 페이지에서 신용 평가 및 현금 흐름 정보와 같은 추가 정보를 입력하게 됩니다.
) } return ( {showTrigger ? ( ) : null} 협력업체 추가 정보 요청 확인 {vendors.length} {vendors.length === 1 ? "개의 협력업체" : "개의 협력업체들"}에게 추가 정보를 요청하시겠습니까?

요청시 협력업체에게 이메일이 발송되며, 협력업체는 별도 페이지에서 신용 평가 및 현금 흐름 정보와 같은 추가 정보를 입력하게 됩니다.
) }