From 534f17c8091de89f845f40da9c54db7e3dd026ba Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Fri, 24 Jan 2025 09:17:34 +0100 Subject: [PATCH] fix: apply enhancements --- .../app-components/dialogs/DeleteDialog.tsx | 24 ++++++++++-------- frontend/src/components/categories/index.tsx | 25 +++++++++---------- .../src/components/context-vars/index.tsx | 25 +++++++++---------- .../components/nlp/components/NlpEntity.tsx | 25 +++++++++---------- .../components/nlp/components/NlpSample.tsx | 25 +++++++++---------- .../components/nlp/components/NlpValues.tsx | 25 +++++++++---------- frontend/src/hooks/useDialog.tsx | 6 +---- 7 files changed, 75 insertions(+), 80 deletions(-) diff --git a/frontend/src/app-components/dialogs/DeleteDialog.tsx b/frontend/src/app-components/dialogs/DeleteDialog.tsx index 71beb003..a04ed524 100644 --- a/frontend/src/app-components/dialogs/DeleteDialog.tsx +++ b/frontend/src/app-components/dialogs/DeleteDialog.tsx @@ -31,6 +31,7 @@ export const DeleteDialog = ({ data: ids, callback, entity = EntityType.ATTACHMENT, + setData, onDeleteError = () => {}, onDeleteSuccess = () => {}, }: DeleteDialogProps & { @@ -39,13 +40,17 @@ export const DeleteDialog = ({ onDeleteSuccess?: (data?: unknown) => void; }) => { const { t } = useTranslate(); - const { mutateAsync: deleteEntity } = useDelete(entity, { + const onSuccess = () => { + setData?.(undefined); + onDeleteSuccess(); + }; + const { mutateAsync: deleteOne } = useDelete(entity, { onError: onDeleteError, - onSuccess: onDeleteSuccess, + onSuccess, }); - const { mutateAsync: deleteEntities } = useDeleteMany(entity, { + const { mutateAsync: deleteMany } = useDeleteMany(entity, { onError: onDeleteError, - onSuccess: onDeleteSuccess, + onSuccess, }); return ( @@ -71,14 +76,13 @@ export const DeleteDialog = ({ } else { if (!Array.isArray(ids)) { throw new Error("IDs need to be an Array"); - } - - if (ids.length === 0) { + } else if (ids.length === 0) { throw new Error("IDs cannot be empty"); + } else if (ids.length === 1) { + await deleteOne(ids[0]); + } else if (ids.length > 1) { + await deleteMany(ids); } - - if (ids.length === 1) await deleteEntity(ids[0]); - else if (ids.length > 1) await deleteEntities(ids); } }} autoFocus diff --git a/frontend/src/components/categories/index.tsx b/frontend/src/components/categories/index.tsx index 3024a253..176b9cb1 100644 --- a/frontend/src/components/categories/index.tsx +++ b/frontend/src/components/categories/index.tsx @@ -115,7 +115,7 @@ export const Categories = () => { toast.error(error.message || t("message.internal_server_error")); }} onDeleteSuccess={() => { - deleteDialogCtl.closeDialog(undefined, "postDelete"); + deleteDialogCtl.closeDialog(); toast.success(t("message.item_delete_success")); }} /> @@ -144,18 +144,17 @@ export const Categories = () => { ) : null} - {deleteDialogCtl.data?.length ? ( - - - - ) : null} + + + diff --git a/frontend/src/components/context-vars/index.tsx b/frontend/src/components/context-vars/index.tsx index ebab65d9..506d6a81 100644 --- a/frontend/src/components/context-vars/index.tsx +++ b/frontend/src/components/context-vars/index.tsx @@ -148,7 +148,7 @@ export const ContextVars = () => { toast.error(error); }} onDeleteSuccess={() => { - deleteDialogCtl.closeDialog(undefined, "postDelete"); + deleteDialogCtl.closeDialog(); toast.success(t("message.item_delete_success")); }} /> @@ -176,18 +176,17 @@ export const ContextVars = () => { ) : null} - {deleteDialogCtl.data?.length ? ( - - - - ) : null} + + + diff --git a/frontend/src/components/nlp/components/NlpEntity.tsx b/frontend/src/components/nlp/components/NlpEntity.tsx index d0fede5b..983b4b67 100644 --- a/frontend/src/components/nlp/components/NlpEntity.tsx +++ b/frontend/src/components/nlp/components/NlpEntity.tsx @@ -159,7 +159,7 @@ const NlpEntity = () => { toast.error(t("message.internal_server_error")); }} onDeleteSuccess={() => { - deleteDialogCtl.closeDialog(undefined, "postDelete"); + deleteDialogCtl.closeDialog(); toast.success(t("message.item_delete_success")); }} /> @@ -185,18 +185,17 @@ const NlpEntity = () => { ) : null} - {deleteDialogCtl.data?.length ? ( - - - - ) : null} + + + { - deleteDialogCtl.closeDialog(undefined, "postDelete"); + deleteDialogCtl.closeDialog(); toast.success(t("message.item_delete_success")); }} /> @@ -379,18 +379,17 @@ export default function NlpSample() { {t("button.export")} ) : null} - {deleteDialogCtl.data?.length ? ( - - - - ) : null} + + + diff --git a/frontend/src/components/nlp/components/NlpValues.tsx b/frontend/src/components/nlp/components/NlpValues.tsx index 02f8ef09..0129128a 100644 --- a/frontend/src/components/nlp/components/NlpValues.tsx +++ b/frontend/src/components/nlp/components/NlpValues.tsx @@ -180,18 +180,17 @@ export const NlpValues = ({ entityId }: { entityId: string }) => { {t("button.add")} ) : null} - {deleteDialogCtl.data?.length ? ( - - - - ) : null} + + + @@ -209,7 +208,7 @@ export const NlpValues = ({ entityId }: { entityId: string }) => { toast.error(error); }} onDeleteSuccess={() => { - deleteDialogCtl.closeDialog(undefined, "postDelete"); + deleteDialogCtl.closeDialog(); toast.success(t("message.item_delete_success")); }} /> diff --git a/frontend/src/hooks/useDialog.tsx b/frontend/src/hooks/useDialog.tsx index dacff5b9..6d7bd447 100644 --- a/frontend/src/hooks/useDialog.tsx +++ b/frontend/src/hooks/useDialog.tsx @@ -6,14 +6,13 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ - import { DialogProps } from "@mui/material"; import { Dispatch, SetStateAction, useState } from "react"; export type DialogControlProps = Omit, "openDialog">; type TCloseDialog = ( e?: E, - reason?: "backdropClick" | "escapeKeyDown" | "postDelete", + reason?: "backdropClick" | "escapeKeyDown", ) => void; type TFnVoid = (data?: T) => void; export type DialogControl = DialogProps & { @@ -32,9 +31,6 @@ export const useDialog = (initialState: boolean): DialogControl => { setOpen(true); }; const closeDialog: TCloseDialog = (event, reason) => { - if (reason === "postDelete") { - setData(undefined); - } if (reason !== "backdropClick") { setOpen(false); }