handle delete sent document modal

This commit is contained in:
Max S 2024-08-13 11:57:12 +02:00
parent 9fa0ae6039
commit 828058d430
3 changed files with 66 additions and 12 deletions

View File

@ -7,7 +7,6 @@ type IProps = {
documentUid: string; documentUid: string;
isOpen: boolean; isOpen: boolean;
onClose?: () => void; onClose?: () => void;
onDeleteSuccess: (uid: string) => void; onDeleteSuccess: (uid: string) => void;
}; };

View File

@ -0,0 +1,36 @@
import Documents from "@Front/Api/LeCoffreApi/Notary/Documents/Documents";
import Modal from "@Front/Components/DesignSystem/Modal";
import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography";
import React, { useCallback } from "react";
type IProps = {
documentUid: string;
isOpen: boolean;
onClose?: () => void;
onDeleteSuccess: (uid: string) => void;
};
export default function DeleteSentDocumentModal(props: IProps) {
const { isOpen, onClose, documentUid, onDeleteSuccess } = props;
const onDelete = useCallback(
() =>
Documents.getInstance()
.delete(documentUid)
.then(() => onDeleteSuccess(documentUid))
.then(onClose)
.catch((error) => console.warn(error)),
[documentUid, onClose, onDeleteSuccess],
);
return (
<Modal
isOpen={isOpen}
onClose={onClose}
title={"Supprimer lenvoi de document ?"}
firstButton={{ children: "Annuler", onClick: onClose }}
secondButton={{ children: "Oui, Supprimer", onClick: onDelete }}>
<Typography typo={ETypo.TEXT_MD_LIGHT}>Cette action annulera l'envoi du document.</Typography>
</Modal>
);
}

View File

@ -15,6 +15,7 @@ import { useCallback, useEffect, useMemo, useState } from "react";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import DeleteAskedDocumentModal from "./DeleteAskedDocumentModal"; import DeleteAskedDocumentModal from "./DeleteAskedDocumentModal";
import DeleteSentDocumentModal from "./DeleteSentDocumentModal";
type IProps = { type IProps = {
documents: Document[]; documents: Document[];
@ -33,7 +34,8 @@ export default function DocumentTables(props: IProps) {
const [documents, setDocuments] = useState<Document[]>(documentsProps); const [documents, setDocuments] = useState<Document[]>(documentsProps);
const [documentUid, setDocumentUid] = useState<string | null>(null); const [documentUid, setDocumentUid] = useState<string | null>(null);
const deleteAskedOocumentModal = useOpenable(); const deleteAskedDocumentModal = useOpenable();
const deleteSentDocumentModal = useOpenable();
useEffect(() => { useEffect(() => {
setDocuments(documentsProps); setDocuments(documentsProps);
@ -43,9 +45,18 @@ export default function DocumentTables(props: IProps) {
(uid: string | undefined) => { (uid: string | undefined) => {
if (!uid) return; if (!uid) return;
setDocumentUid(uid); setDocumentUid(uid);
deleteAskedOocumentModal.open(); deleteAskedDocumentModal.open();
}, },
[deleteAskedOocumentModal], [deleteAskedDocumentModal],
);
const openDeleteSentDocumentModal = useCallback(
(uid: string | undefined) => {
if (!uid) return;
setDocumentUid(uid);
deleteSentDocumentModal.open();
},
[deleteSentDocumentModal],
); );
const onDownload = useCallback((doc: Document) => { const onDownload = useCallback((doc: Document) => {
@ -190,13 +201,13 @@ export default function DocumentTables(props: IProps) {
actions: ( actions: (
<div className={classes["actions"]}> <div className={classes["actions"]}>
<IconButton onClick={() => onDownload(document)} icon={<ArrowDownTrayIcon />} /> <IconButton onClick={() => onDownload(document)} icon={<ArrowDownTrayIcon />} />
<IconButton icon={<TrashIcon onClick={() => openDeleteAskedDocumentModal(document.uid)} />} /> <IconButton icon={<TrashIcon onClick={() => openDeleteSentDocumentModal(document.uid)} />} />
</div> </div>
), ),
}; };
}) })
.filter((document) => document !== null) as IRowProps[], .filter((document) => document !== null) as IRowProps[],
[documents, onDownload, openDeleteAskedDocumentModal], [documents, onDownload, openDeleteSentDocumentModal],
); );
const progress = useMemo(() => { const progress = useMemo(() => {
@ -227,12 +238,20 @@ export default function DocumentTables(props: IProps) {
{refusedDocuments.length > 0 && <Table header={getHeader("Demandé le")} rows={refusedDocuments} />} {refusedDocuments.length > 0 && <Table header={getHeader("Demandé le")} rows={refusedDocuments} />}
{sentDocuments.length > 0 && <Table header={getHeader("Envoyé le")} rows={sentDocuments} />} {sentDocuments.length > 0 && <Table header={getHeader("Envoyé le")} rows={sentDocuments} />}
{documentUid && ( {documentUid && (
<DeleteAskedDocumentModal <>
isOpen={deleteAskedOocumentModal.isOpen} <DeleteAskedDocumentModal
onClose={deleteAskedOocumentModal.close} isOpen={deleteAskedDocumentModal.isOpen}
onDeleteSuccess={handleDelete} onClose={deleteAskedDocumentModal.close}
documentUid={documentUid} onDeleteSuccess={handleDelete}
/> documentUid={documentUid}
/>
<DeleteSentDocumentModal
isOpen={deleteSentDocumentModal.isOpen}
onClose={deleteSentDocumentModal.close}
onDeleteSuccess={handleDelete}
documentUid={documentUid}
/>
</>
)} )}
</div> </div>
); );