[WIP] Download contract

This commit is contained in:
Julien Aldon
2026-02-16 17:49:15 +01:00
parent 5354a74cac
commit ab98ba81c8
10 changed files with 98 additions and 15 deletions

View File

@@ -1,8 +1,9 @@
import { ActionIcon, Table, Tooltip } from "@mantine/core";
import { type Contract } from "@/services/resources/contracts";
import { IconX } from "@tabler/icons-react";
import { IconDownload, IconX } from "@tabler/icons-react";
import { t } from "@/config/i18n";
import { useDeleteContract } from "@/services/api";
import { useDeleteContract, useGetContractFile } from "@/services/api";
import { useCallback } from "react";
export type ContractRowProps = {
contract: Contract;
@@ -12,7 +13,19 @@ export default function ContractRow({ contract }: ContractRowProps) {
// const [searchParams] = useSearchParams();
const deleteMutation = useDeleteContract();
// const navigate = useNavigate();
const {refetch, isFetching} = useGetContractFile(contract.id)
const handleDownload = useCallback(async () => {
const { data } = await refetch();
if (!data)
return;
const url = URL.createObjectURL(data.blob);
const link = document.createElement("a");
link.href = url;
link.download = data.filename;
link.click();
URL.revokeObjectURL(url);
}, [useGetContractFile])
return (
<Table.Tr key={contract.id}>
<Table.Td>
@@ -37,6 +50,20 @@ export default function ContractRow({ contract }: ContractRowProps) {
<IconEdit />
</ActionIcon>
</Tooltip> */}
<Tooltip
label={t("download contract")}
>
<ActionIcon
size="sm"
mr="5"
onClick={(e) => {
e.stopPropagation();
handleDownload()
}}
>
<IconDownload/>
</ActionIcon>
</Tooltip>
<Tooltip label={t("remove contract", { capfirst: true })}>
<ActionIcon
color="red"