/* * Copyright © 2024 Hexastack. All rights reserved. * * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. * 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 ErrorIcon from "@mui/icons-material/Error"; import { Button, Dialog, DialogActions, DialogContent, Grid, Typography, } from "@mui/material"; import { DialogTitle } from "@/app-components/dialogs/DialogTitle"; import { useDelete } from "@/hooks/crud/useDelete"; import { useDeleteMany } from "@/hooks/crud/useDeleteMany"; import { DialogControl } from "@/hooks/useDialog"; import { useTranslate } from "@/hooks/useTranslate"; import { EntityType } from "@/services/types"; import { IEntityMapTypes } from "@/types/base.types"; export type DeleteDialogProps = DialogControl; export const DeleteDialog = ({ open, closeDialog: closeFunction, data: ids, callback, entity = EntityType.ATTACHMENT, setData, onDeleteError = () => {}, onDeleteSuccess = () => {}, }: DeleteDialogProps & { entity?: keyof IEntityMapTypes; onDeleteError?: (error: Error) => void; onDeleteSuccess?: (data?: unknown) => void; }) => { const { t } = useTranslate(); const onSuccess = (data: unknown) => { setData?.(undefined); onDeleteSuccess(data); }; const { mutateAsync: deleteOne } = useDelete(entity, { onError: onDeleteError, onSuccess, }); const { mutateAsync: deleteMany } = useDeleteMany(entity, { onError: onDeleteError, onSuccess, }); return ( {t("title.warning")} {t("message.item_delete_confirm")} ); };