diff --git a/frontend/src/components/categories/index.tsx b/frontend/src/components/categories/index.tsx index d9976536..66ce2089 100644 --- a/frontend/src/components/categories/index.tsx +++ b/frontend/src/components/categories/index.tsx @@ -11,9 +11,9 @@ import DeleteIcon from "@mui/icons-material/Delete"; import FolderIcon from "@mui/icons-material/Folder"; import { Button, Grid, Paper } from "@mui/material"; import { GridColDef, GridRowSelectionModel } from "@mui/x-data-grid"; -import { useState } from "react"; import { DeleteDialog } from "@/app-components/dialogs/DeleteDialog"; +import { deleteCallbackHandler } from "@/app-components/dialogs/utils/deleteHandles"; import { FilterTextfield } from "@/app-components/inputs/FilterTextfield"; import { ActionColumnLabel, @@ -59,8 +59,7 @@ export const Categories = () => { toast.error(error.message || t("message.internal_server_error")); }, onSuccess: () => { - deleteDialogCtl.closeDialog(); - setSelectedCategories([]); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }); @@ -69,12 +68,10 @@ export const Categories = () => { toast.error(error.message || t("message.internal_server_error")); }, onSuccess: () => { - deleteDialogCtl.closeDialog(); - setSelectedCategories([]); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }); - const [selectedCategories, setSelectedCategories] = useState([]); const actionColumns = useActionColumns( EntityType.CATEGORY, [ @@ -125,9 +122,10 @@ export const Categories = () => { }, actionColumns, ]; - const handleSelectionChange = (selection: GridRowSelectionModel) => { - setSelectedCategories(selection as string[]); - }; + const handleSelectionChange = (selection: GridRowSelectionModel) => + deleteDialogCtl.saveData?.( + selection.length ? selection.toString() : undefined, + ); return ( @@ -135,17 +133,7 @@ export const Categories = () => { { - if (selectedCategories.length > 0) { - deleteCategories(selectedCategories), setSelectedCategories([]); - deleteDialogCtl.closeDialog(); - } else if (deleteDialogCtl?.data) { - { - deleteCategory(deleteDialogCtl.data); - deleteDialogCtl.closeDialog(); - } - } - }} + callback={deleteCallbackHandler(deleteCategory, deleteCategories)} /> @@ -172,13 +160,13 @@ export const Categories = () => { ) : null} - {selectedCategories.length > 0 && ( + {deleteDialogCtl?.data && ( diff --git a/frontend/src/components/content-types/index.tsx b/frontend/src/components/content-types/index.tsx index 84cf93c0..e391fc39 100644 --- a/frontend/src/components/content-types/index.tsx +++ b/frontend/src/components/content-types/index.tsx @@ -12,6 +12,7 @@ import { Button, Grid, Paper } from "@mui/material"; import { useRouter } from "next/router"; import { DeleteDialog } from "@/app-components/dialogs"; +import { deleteCallbackHandler } from "@/app-components/dialogs/utils/deleteHandles"; import { FilterTextfield } from "@/app-components/inputs/FilterTextfield"; import { ActionColumnLabel, @@ -120,10 +121,7 @@ export const ContentTypes = () => { { - if (deleteDialogCtl?.data) - deleteContentType(deleteDialogCtl.data); - }} + callback={deleteCallbackHandler(deleteContentType)} /> diff --git a/frontend/src/components/contents/index.tsx b/frontend/src/components/contents/index.tsx index 646455d7..b09738a6 100644 --- a/frontend/src/components/contents/index.tsx +++ b/frontend/src/components/contents/index.tsx @@ -15,6 +15,7 @@ import Link from "next/link"; import { useRouter } from "next/router"; import { DeleteDialog } from "@/app-components/dialogs"; +import { deleteCallbackHandler } from "@/app-components/dialogs/utils/deleteHandles"; import { FilterTextfield } from "@/app-components/inputs/FilterTextfield"; import { ActionColumnLabel, @@ -169,9 +170,7 @@ export const Contents = () => { /> { - if (deleteDialogCtl?.data) deleteContent(deleteDialogCtl.data); - }} + callback={deleteCallbackHandler(deleteContent)} /> diff --git a/frontend/src/components/context-vars/index.tsx b/frontend/src/components/context-vars/index.tsx index 502dc580..63279e16 100644 --- a/frontend/src/components/context-vars/index.tsx +++ b/frontend/src/components/context-vars/index.tsx @@ -11,9 +11,9 @@ import AddIcon from "@mui/icons-material/Add"; import DeleteIcon from "@mui/icons-material/Delete"; import { Button, Grid, Paper, Switch } from "@mui/material"; import { GridColDef, GridRowSelectionModel } from "@mui/x-data-grid"; -import React, { useState } from "react"; import { DeleteDialog } from "@/app-components/dialogs/DeleteDialog"; +import { deleteCallbackHandler } from "@/app-components/dialogs/utils/deleteHandles"; import { FilterTextfield } from "@/app-components/inputs/FilterTextfield"; import { ActionColumnLabel, @@ -67,8 +67,7 @@ export const ContextVars = () => { toast.error(error); }, onSuccess() { - deleteDialogCtl.closeDialog(); - setSelectedContextVars([]); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }); @@ -79,13 +78,11 @@ export const ContextVars = () => { toast.error(error); }, onSuccess: () => { - deleteDialogCtl.closeDialog(); - setSelectedContextVars([]); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }, ); - const [selectedContextVars, setSelectedContextVars] = useState([]); const actionColumns = useActionColumns( EntityType.CONTEXT_VAR, [ @@ -160,9 +157,10 @@ export const ContextVars = () => { }, actionColumns, ]; - const handleSelectionChange = (selection: GridRowSelectionModel) => { - setSelectedContextVars(selection as string[]); - }; + const handleSelectionChange = (selection: GridRowSelectionModel) => + deleteDialogCtl.saveData?.( + selection.length ? selection.toString() : undefined, + ); return ( @@ -171,15 +169,7 @@ export const ContextVars = () => { { - if (selectedContextVars.length > 0) { - deleteContextVars(selectedContextVars); - setSelectedContextVars([]); - deleteDialogCtl.closeDialog(); - } else if (deleteDialogCtl?.data) { - deleteContextVar(deleteDialogCtl.data); - } - }} + callback={deleteCallbackHandler(deleteContextVar, deleteContextVars)} /> { ) : null} - {selectedContextVars.length > 0 && ( + {deleteDialogCtl?.data && ( ) : null} - {selectedNlpEntities.length > 0 && ( + {deleteDialogCtl?.data && ( )} - (false); + const deleteDialogCtl = useDialog(false); const queryClient = useQueryClient(); const [type, setType] = useState("all"); const [language, setLanguage] = useState(undefined); @@ -97,7 +100,7 @@ export default function NlpSample() { toast.error(t("message.internal_server_error")); }, onSuccess() { - deleteDialogCtl.closeDialog(); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }); @@ -108,8 +111,7 @@ export default function NlpSample() { toast.error(error); }, onSuccess: () => { - deleteDialogCtl.closeDialog(); - setSelectedNlpSamples([]); + deleteDialogCtl.closeDialog(undefined, "postDelete"); toast.success(t("message.item_delete_success")); }, }, @@ -140,15 +142,12 @@ export default function NlpSample() { }, }, ); - const [selectedNlpSamples, setSelectedNlpSamples] = useState([]); const { dataGridProps } = useFind( { entity: EntityType.NLP_SAMPLE, format: Format.FULL }, { params: searchPayload, }, ); - const deleteDialogCtl = useDialog(false); - const editDialogCtl = useDialog(false); const actionColumns = getActionsColumn( [ { @@ -291,9 +290,10 @@ export default function NlpSample() { }, actionColumns, ]; - const handleSelectionChange = (selection: GridRowSelectionModel) => { - setSelectedNlpSamples(selection as string[]); - }; + const handleSelectionChange = (selection: GridRowSelectionModel) => + deleteDialogCtl.saveData?.( + selection.length ? selection.toString() : undefined, + ); const handleImportChange = async (file: File) => { await importDataset(file); }; @@ -303,15 +303,7 @@ export default function NlpSample() { { - if (selectedNlpSamples.length > 0) { - deleteNlpSamples(selectedNlpSamples); - setSelectedNlpSamples([]); - deleteDialogCtl.closeDialog(); - } else if (deleteDialogCtl.data) { - deleteNlpSample(deleteDialogCtl.data); - } - }} + callback={deleteCallbackHandler(deleteNlpSample, deleteNlpSamples)} /> ) : null} - {selectedNlpSamples.length > 0 && ( + {deleteDialogCtl.data && ( ) : null} - {selectedNlpValues.length > 0 && ( + {deleteDialogCtl?.data && ( @@ -222,26 +220,18 @@ export const NlpValues = ({ entityId }: { entityId: string }) => { { refetchEntity(); }} /> { - if (selectedNlpValues.length > 0) { - deleteNlpValues(selectedNlpValues); - setSelectedNlpValues([]); - deleteEntityDialogCtl.closeDialog(); - } else if (deleteEntityDialogCtl.data) { - deleteNlpValue(deleteEntityDialogCtl.data); - } - }} + {...deleteDialogCtl} + callback={deleteCallbackHandler(deleteNlpValue, deleteNlpValues)} /> {}} /> diff --git a/frontend/src/components/roles/index.tsx b/frontend/src/components/roles/index.tsx index f23655e4..8dbd24bf 100644 --- a/frontend/src/components/roles/index.tsx +++ b/frontend/src/components/roles/index.tsx @@ -10,9 +10,9 @@ import { faUniversalAccess } from "@fortawesome/free-solid-svg-icons"; import AddIcon from "@mui/icons-material/Add"; import { Button, Grid, Paper } from "@mui/material"; import { GridColDef } from "@mui/x-data-grid"; -import React from "react"; import { DeleteDialog } from "@/app-components/dialogs/DeleteDialog"; +import { deleteCallbackHandler } from "@/app-components/dialogs/utils/deleteHandles"; import { FilterTextfield } from "@/app-components/inputs/FilterTextfield"; import { ActionColumnLabel, @@ -132,9 +132,7 @@ export const Roles = () => { { - if (deleteDialogCtl.data) deleteRole(deleteDialogCtl.data); - }} + callback={deleteCallbackHandler(deleteRole)} /> { { - if (deleteDialogCtl?.data) - deleteTranslation(deleteDialogCtl.data); - }} + callback={deleteCallbackHandler(deleteTranslation)} />