fix contract submission
All checks were successful
Deploy Amap / deploy (push) Successful in 33s

This commit is contained in:
Julien Aldon
2026-02-20 12:05:41 +01:00
parent af4941c1b9
commit 34b2436ca0
3 changed files with 22 additions and 13 deletions

View File

@@ -18,7 +18,7 @@ import {
Title,
} from "@mantine/core";
import { useForm } from "@mantine/form";
import { IconMail, IconPhone, IconUser } from "@tabler/icons-react";
import { IconDownload, IconMail, IconPhone, IconUser } from "@tabler/icons-react";
import { useCallback, useMemo, useRef } from "react";
import { useParams } from "react-router";
import { computePrices } from "./price";
@@ -140,6 +140,7 @@ export function Contract() {
products: tranformProducts(withDefaultValues(inputForm.getValues().products)),
};
await createContractMutation.mutateAsync(contract);
window.location.href = '/';
} else {
const firstErrorField = Object.keys(errors.errors)[0];
const ref = inputRefs.current[firstErrorField];
@@ -316,8 +317,10 @@ export function Contract() {
currency: "EUR",
}).format(price)}
</Text>
<Button aria-label={t("submit contract")} onClick={handleSubmit}>
{t("submit contract")}
<Button
leftSection={<IconDownload/>}
aria-label={t("submit contracts")} onClick={handleSubmit}>
{t("submit contract", {capfirst: true})}
</Button>
</Overlay>
</Stack>

View File

@@ -752,7 +752,6 @@ export function useGetAllContractFile() {
disposition && disposition?.includes("filename=")
? disposition.split("filename=")[1].replace(/"/g, "")
: `contract_${form_id}.zip`;
console.log(disposition);
return { blob, filename };
},
onSuccess: ({ blob, filename }) => {
@@ -770,20 +769,28 @@ export function useCreateContract() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (newContract: ContractCreate) => {
return fetch(`${Config.backend_uri}/contracts`, {
mutationFn: async (newContract: ContractCreate) => {
const res = await fetch(`${Config.backend_uri}/contracts`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(newContract),
}).then(async (res) => await res.blob());
}).then((res) => res);
if (!res.ok) throw new Error();
const blob = await res.blob();
const disposition = res.headers.get("Content-Disposition");
const filename =
disposition && disposition?.includes("filename=")
? disposition.split("filename=")[1].replace(/"/g, "")
: `contract_${newContract.form_id}.pdf`;
return { blob, filename };
},
onSuccess: async (pdfBlob) => {
const url = URL.createObjectURL(pdfBlob);
onSuccess: async ({ blob, filename }) => {
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = `contract.pdf`;
link.download = filename;
link.click();
URL.revokeObjectURL(url);
await queryClient.invalidateQueries({ queryKey: ["contracts"] });