From 0e44e3c70d303cd653f882e847a0c82572cf30fa Mon Sep 17 00:00:00 2001 From: Arnei Date: Tue, 21 Jan 2025 10:41:12 +0100 Subject: [PATCH] Fix "Unsaved ACL changes" promt not appearing The introduction of the new modal component broke the confirmation modal that appeared when you had unsaved changes in your events or series details access policy tab. Should now be restored. --- .../events/partials/modals/EventDetailsModal.tsx | 2 ++ .../events/partials/modals/SeriesDetailsModal.tsx | 2 ++ .../recordings/partials/RecordingsActionCell.tsx | 5 ----- .../recordings/partials/modal/RecordingDetailsModal.tsx | 3 --- src/components/shared/modals/Modal.tsx | 8 ++++++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/events/partials/modals/EventDetailsModal.tsx b/src/components/events/partials/modals/EventDetailsModal.tsx index 5712c70831..1d34186632 100644 --- a/src/components/events/partials/modals/EventDetailsModal.tsx +++ b/src/components/events/partials/modals/EventDetailsModal.tsx @@ -34,7 +34,9 @@ const EventDetailsModal = () => { setPolicyChanged(false); dispatch(removeNotificationWizardForm()); hideModal(); + return true; } + return false; }; return ( diff --git a/src/components/events/partials/modals/SeriesDetailsModal.tsx b/src/components/events/partials/modals/SeriesDetailsModal.tsx index c945bceacf..d455178b04 100644 --- a/src/components/events/partials/modals/SeriesDetailsModal.tsx +++ b/src/components/events/partials/modals/SeriesDetailsModal.tsx @@ -31,7 +31,9 @@ const SeriesDetailsModal = ({ if (!policyChanged || confirmUnsaved()) { setPolicyChanged(false); dispatch(removeNotificationWizardForm()); + return true; } + return false; }; return ( diff --git a/src/components/recordings/partials/RecordingsActionCell.tsx b/src/components/recordings/partials/RecordingsActionCell.tsx index 6bbbdae861..d69e00b8da 100644 --- a/src/components/recordings/partials/RecordingsActionCell.tsx +++ b/src/components/recordings/partials/RecordingsActionCell.tsx @@ -30,10 +30,6 @@ const RecordingsActionCell = ({ deleteConfirmationModalRef.current?.close?.(); }; - const hideRecordingDetails = () => { - recordingDetailsModalRef.current?.close?.() - }; - const showRecordingDetails = async () => { await dispatch(fetchRecordingDetails(row.name)); @@ -57,7 +53,6 @@ const RecordingsActionCell = ({ )} diff --git a/src/components/recordings/partials/modal/RecordingDetailsModal.tsx b/src/components/recordings/partials/modal/RecordingDetailsModal.tsx index 6bfb3c8159..1305b0318a 100644 --- a/src/components/recordings/partials/modal/RecordingDetailsModal.tsx +++ b/src/components/recordings/partials/modal/RecordingDetailsModal.tsx @@ -7,11 +7,9 @@ import { Modal, ModalHandle } from "../../../shared/modals/Modal"; * This component renders the modal for displaying recording details */ const RecordingDetailsModal = ({ - close, recordingId, modalRef, }: { - close: () => void, recordingId: string, modalRef: React.RefObject }) => { @@ -19,7 +17,6 @@ const RecordingDetailsModal = ({ return ( void + // Having this return false will prevent the modal from closing + closeCallback?: () => boolean /** If true, the first element in the modal automatically be focused. If false, * no element is initially focused */ initialFocus?: false | string @@ -43,7 +44,10 @@ export const Modal = forwardRef>(({ isOpen: () => isOpen, open: () => setOpen(true), close: () => { - closeCallback !== undefined && closeCallback(); + if (closeCallback !== undefined && !closeCallback()) { + // Don't close modal + return; + } setOpen(false); }, }), [closeCallback, isOpen]);