import { PDFViewer } from "@/components"; import { cn } from "@/lib/utils"; import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Skeleton, } from "@/ui"; import { useToast } from "@/ui/use-toast"; import { IListQuotes_Response_DTO } from "@shared/contexts"; import { t } from "i18next"; import { DownloadIcon, MoreVerticalIcon } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; import { Trans } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { useQuotes } from "../hooks"; import { DownloadQuoteDialog } from "./DownloadQuoteDialog"; const QuotePDFPreview = ({ quote, className, }: { quote?: IListQuotes_Response_DTO; className: string; }) => { const navigate = useNavigate(); const { toast } = useToast(); const { useReport, getQuotePDFFilename, useDownloader } = useQuotes(); const { download, ...downloadProps } = useDownloader(); const { report, preview, isInProgress } = useReport(); const [URLReport, setURLReport] = useState(undefined); const handleFinishDownload = useCallback(() => { toast({ description: t("quotes.downloading_dialog.toast_success"), }); }, [toast]); const handleDownload = useCallback(() => { if (quote) download(quote.id, getQuotePDFFilename(quote)); }, [quote]); useEffect(() => { const timer = setTimeout(() => { if (quote && quote.id) { preview(quote.id); } }, 200); return () => clearTimeout(timer); }, [quote]); useEffect(() => { if (!isInProgress && report) { const blobURL = window.URL && window.URL.createObjectURL ? window.URL.createObjectURL(report) : window.webkitURL.createObjectURL(report); setURLReport(blobURL); return () => { setURLReport(undefined); window.URL.revokeObjectURL(blobURL); }; } }, [report, isInProgress]); if (!quote) { return (

Select a quote

); } if (isInProgress) { return ( ); } return ( <> {t("quotes.list.preview.quote")}
{/**/} { e.preventDefault(); navigate(`/quotes/edit/${quote.id}`, { relative: "path" }); }} >
{false && ( {quote?.reference} {quote?.date.toString()} )}
); }; QuotePDFPreview.whyDidYouRender = true; export { QuotePDFPreview };