refactor: download function to be reusable

This commit is contained in:
Ephraim Atta-Duncan
2023-12-07 14:52:12 +00:00
parent 935601ad16
commit 38ad3a1922
6 changed files with 66 additions and 93 deletions

View File

@ -0,0 +1,37 @@
import type { DocumentData } from '@documenso/prisma/client';
import { toast } from '@documenso/ui/primitives/use-toast';
import { getFile } from '../universal/upload/get-file';
type DownloadPDFProps = {
documentData: DocumentData;
fileName?: string;
};
export const downloadFile = async ({ documentData, fileName }: DownloadPDFProps) => {
try {
const bytes = await getFile(documentData);
const blob = new Blob([bytes], {
type: 'application/pdf',
});
const link = window.document.createElement('a');
const baseTitle = fileName?.includes('.pdf') ? fileName.split('.pdf')[0] : fileName;
link.href = window.URL.createObjectURL(blob);
link.download = baseTitle ? `${baseTitle}_signed.pdf` : 'document.pdf';
link.click();
window.URL.revokeObjectURL(link.href);
} catch (err) {
console.error(err);
toast({
title: 'Something went wrong',
description: 'An error occurred while downloading your document.',
variant: 'destructive',
});
}
};