diff --git a/ts/components/conversation/AdminLeaveClosedGroupDialog.tsx b/ts/components/conversation/AdminLeaveClosedGroupDialog.tsx index 915a2881f..15a30df7a 100644 --- a/ts/components/conversation/AdminLeaveClosedGroupDialog.tsx +++ b/ts/components/conversation/AdminLeaveClosedGroupDialog.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { SessionButton, SessionButtonColor } from '../session/SessionButton'; import { SessionWrapperModal } from '../session/SessionWrapperModal'; @@ -16,11 +16,15 @@ export const AdminLeaveClosedGroupDialog = (props: Props) => { const warningAsAdmin = `${window.i18n('leaveGroupConfirmationAdmin')}`; const okText = window.i18n('leaveAndRemoveForEveryone'); const cancelText = window.i18n('cancel'); + const [isLoading, setIsLoading] = useState(false); const onClickOK = async () => { + setIsLoading(true); await getConversationController() .get(props.conversationId) .leaveClosedGroup(); + setIsLoading(false); + closeDialog(); }; diff --git a/ts/components/session/LeftPaneSettingSection.tsx b/ts/components/session/LeftPaneSettingSection.tsx index 6778e8f03..fe4c1874f 100644 --- a/ts/components/session/LeftPaneSettingSection.tsx +++ b/ts/components/session/LeftPaneSettingSection.tsx @@ -120,7 +120,6 @@ const onDeleteAccount = () => { okTheme: SessionButtonColor.Danger, onClickOk: deleteAccount, onClickClose, - closeAfterClickOk: true, }) ); }; diff --git a/ts/components/session/SessionConfirm.tsx b/ts/components/session/SessionConfirm.tsx index 46029fd08..27b40bb93 100644 --- a/ts/components/session/SessionConfirm.tsx +++ b/ts/components/session/SessionConfirm.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { SessionModal } from './SessionModal'; import { SessionButton, SessionButtonColor } from './SessionButton'; import { SessionHtmlRenderer } from './SessionHTMLRenderer'; @@ -9,6 +9,7 @@ import { useDispatch } from 'react-redux'; import { updateConfirmModal } from '../../state/ducks/modalDialog'; import { update } from 'lodash'; import { SpacerLG } from '../basic/Text'; +import { SessionSpinner } from './SessionSpinner'; export interface SessionConfirmDialogProps { message?: string; @@ -26,7 +27,6 @@ export interface SessionConfirmDialogProps { sessionIcon?: SessionIconType; iconSize?: SessionIconSize; theme?: DefaultTheme; - closeAfterClickOk?: boolean; shouldShowConfirm?: () => boolean | undefined; } @@ -45,6 +45,8 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => { shouldShowConfirm, } = props; + const [isLoading, setIsLoading] = useState(false); + const okText = props.okText || window.i18n('ok'); const cancelText = props.cancelText || window.i18n('cancel'); const showHeader = !!props.title; @@ -53,9 +55,16 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => { const messageSubText = messageSub ? 'session-confirm-main-message' : 'subtle'; - const onClickOkHandler = () => { + const onClickOkHandler = async () => { if (onClickOk) { - onClickOk(); + setIsLoading(true); + try { + await onClickOk(); + } catch (e) { + window.log.warn(e); + } finally { + setIsLoading(false); + } } window.inboxStore?.dispatch(updateConfirmModal(null)); @@ -99,6 +108,8 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => { className="session-confirm-sub-message subtle" html={messageSub} /> + +