From 381be8a9825de10fbea203ff53b86a0f76b2ad3c Mon Sep 17 00:00:00 2001 From: CatsJuice Date: Tue, 2 Apr 2024 08:23:26 +0000 Subject: [PATCH] fix(component): useConfirmModal can't be closed automatically when 'onConfirm' is non-async (#6439) --- .../src/ui/modal/confirm-modal.stories.tsx | 21 +++++++++++++++++++ .../component/src/ui/modal/confirm-modal.tsx | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/frontend/component/src/ui/modal/confirm-modal.stories.tsx b/packages/frontend/component/src/ui/modal/confirm-modal.stories.tsx index f3b58e5b9c..80ce8b2333 100644 --- a/packages/frontend/component/src/ui/modal/confirm-modal.stories.tsx +++ b/packages/frontend/component/src/ui/modal/confirm-modal.stories.tsx @@ -36,3 +36,24 @@ export const UsingHook = () => { return ; }; + +export const AutoClose = () => { + const { openConfirmModal } = useConfirmModal(); + + const onConfirm = () => { + openConfirmModal({ + cancelText: 'Cancel', + confirmButtonOptions: { + children: 'Confirm', + }, + title: 'Confirm Modal', + children: 'Are you sure you want to confirm?', + onConfirm: () => console.log('Confirmed'), + onCancel: () => { + console.log('Cancelled'); + }, + }); + }; + + return ; +}; diff --git a/packages/frontend/component/src/ui/modal/confirm-modal.tsx b/packages/frontend/component/src/ui/modal/confirm-modal.tsx index 6ef27bbf2b..8d28583a2a 100644 --- a/packages/frontend/component/src/ui/modal/confirm-modal.tsx +++ b/packages/frontend/component/src/ui/modal/confirm-modal.tsx @@ -104,8 +104,8 @@ export const ConfirmModalProvider = ({ children }: PropsWithChildren) => { const onConfirm = () => { setLoading(true); - _onConfirm?.() - ?.then(() => onSuccess?.()) + return Promise.resolve(_onConfirm?.()) + .then(() => onSuccess?.()) .catch(console.error) .finally(() => autoClose && closeConfirmModal()); };