feat: handle download file error with toast

This commit is contained in:
Ephraim Atta-Duncan
2023-11-16 07:10:13 +00:00
parent e838a07bf9
commit b4f1a5abce

View File

@ -12,6 +12,7 @@ import { DocumentStatus, SigningStatus } from '@documenso/prisma/client';
import type { DocumentWithData } from '@documenso/prisma/types/document-with-data'; import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import { trpc as trpcClient } from '@documenso/trpc/client'; import { trpc as trpcClient } from '@documenso/trpc/client';
import { Button } from '@documenso/ui/primitives/button'; import { Button } from '@documenso/ui/primitives/button';
import { toast } from '@documenso/ui/primitives/use-toast';
export type DataTableActionButtonProps = { export type DataTableActionButtonProps = {
row: Document & { row: Document & {
@ -37,6 +38,7 @@ export const DataTableActionButton = ({ row }: DataTableActionButtonProps) => {
const isSigned = recipient?.signingStatus === SigningStatus.SIGNED; const isSigned = recipient?.signingStatus === SigningStatus.SIGNED;
const onDownloadClick = async () => { const onDownloadClick = async () => {
try {
let document: DocumentWithData | null = null; let document: DocumentWithData | null = null;
if (!recipient) { if (!recipient) {
@ -51,11 +53,13 @@ export const DataTableActionButton = ({ row }: DataTableActionButtonProps) => {
const documentData = document?.documentData; const documentData = document?.documentData;
console.log(documentData);
if (!documentData) { if (!documentData) {
return; return;
} }
const documentBytes = await getFile(documentData); const documentBytes = await getFile({ data: documentData.data, type: documentData.type });
const blob = new Blob([documentBytes], { const blob = new Blob([documentBytes], {
type: 'application/pdf', type: 'application/pdf',
@ -69,6 +73,13 @@ export const DataTableActionButton = ({ row }: DataTableActionButtonProps) => {
link.click(); link.click();
window.URL.revokeObjectURL(link.href); window.URL.revokeObjectURL(link.href);
} catch (error) {
toast({
title: 'Something went wrong',
description: 'An error occurred while trying to download file.',
variant: 'destructive',
});
}
}; };
return match({ return match({