From 11dde8d03dc4fde9de77a69255f78ef1cd000e57 Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Tue, 17 Jan 2023 00:33:20 +0530 Subject: [PATCH] refactor: alert close button --- packages/styles/src/Alert/Alert.ts | 16 ++++++++- .../ConfirmDeleteAccountModal.tsx | 28 ++++++++------- .../ConfirmSignoutModal.tsx | 36 ++++++++++--------- .../OtherSessionsSignOut.tsx | 28 ++++++++------- .../SessionsModal/SessionsModal.tsx | 22 +++++++----- 5 files changed, 81 insertions(+), 49 deletions(-) diff --git a/packages/styles/src/Alert/Alert.ts b/packages/styles/src/Alert/Alert.ts index f730ed58b..e9de199a5 100644 --- a/packages/styles/src/Alert/Alert.ts +++ b/packages/styles/src/Alert/Alert.ts @@ -103,7 +103,14 @@ export class SKAlert { buttonsTemplate = '' panelStyle = 'style="padding-bottom: 8px"' } - const titleTemplate = this.title ? `
${this.title}
` : '' + const titleTemplate = this.title + ? `
+ ${this.title} + +
` + : '' const messageTemplate = this.text ? `

${this.text}

` : '' const template = ` @@ -169,5 +176,12 @@ export class SKAlert { } }) } + + const closeButton = this.element.querySelector('#close-button') + if (closeButton) { + closeButton.onclick = () => { + this.dismiss() + } + } } } diff --git a/packages/web/src/javascripts/Components/ConfirmDeleteAccountModal/ConfirmDeleteAccountModal.tsx b/packages/web/src/javascripts/Components/ConfirmDeleteAccountModal/ConfirmDeleteAccountModal.tsx index 5aa84876a..6a31e054a 100644 --- a/packages/web/src/javascripts/Components/ConfirmDeleteAccountModal/ConfirmDeleteAccountModal.tsx +++ b/packages/web/src/javascripts/Components/ConfirmDeleteAccountModal/ConfirmDeleteAccountModal.tsx @@ -1,10 +1,11 @@ import { observer } from 'mobx-react-lite' import { ViewControllerManager } from '@Controllers/ViewControllerManager' import { AlertDialog, AlertDialogDescription, AlertDialogLabel } from '@reach/alert-dialog' -import { useRef } from 'react' +import { useCallback, useRef } from 'react' import { STRING_DELETE_ACCOUNT_CONFIRMATION } from '@/Constants/Strings' import Button from '@/Components/Button/Button' import { WebApplication } from '@/Application/Application' +import Icon from '../Icon/Icon' type Props = { viewControllerManager: ViewControllerManager @@ -12,12 +13,17 @@ type Props = { } const ConfirmDeleteAccountModal = ({ application, viewControllerManager }: Props) => { - function closeDialog() { + const closeDialog = useCallback(() => { viewControllerManager.accountMenuController.setDeletingAccount(false) - } + }, [viewControllerManager.accountMenuController]) const cancelRef = useRef(null) + const confirm = useCallback(() => { + application.user.deleteAccount().catch(console.error) + closeDialog() + }, [application.user, closeDialog]) + return (
@@ -25,7 +31,12 @@ const ConfirmDeleteAccountModal = ({ application, viewControllerManager }: Props
- Delete account? + + Delete account? + +

{STRING_DELETE_ACCOUNT_CONFIRMATION}

@@ -36,14 +47,7 @@ const ConfirmDeleteAccountModal = ({ application, viewControllerManager }: Props -
diff --git a/packages/web/src/javascripts/Components/ConfirmSignoutModal/ConfirmSignoutModal.tsx b/packages/web/src/javascripts/Components/ConfirmSignoutModal/ConfirmSignoutModal.tsx index ec5dd1e0d..ac20e7491 100644 --- a/packages/web/src/javascripts/Components/ConfirmSignoutModal/ConfirmSignoutModal.tsx +++ b/packages/web/src/javascripts/Components/ConfirmSignoutModal/ConfirmSignoutModal.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent, useEffect, useRef, useState } from 'react' +import { FunctionComponent, useCallback, useEffect, useRef, useState } from 'react' import { AlertDialog, AlertDialogDescription, AlertDialogLabel } from '@reach/alert-dialog' import { STRING_SIGN_OUT_CONFIRMATION } from '@/Constants/Strings' import { WebApplication } from '@/Application/Application' @@ -7,6 +7,7 @@ import { observer } from 'mobx-react-lite' import { ApplicationGroup } from '@/Application/ApplicationGroup' import { isDesktopApplication } from '@/Utils' import Button from '@/Components/Button/Button' +import Icon from '../Icon/Icon' type Props = { application: WebApplication @@ -18,9 +19,9 @@ const ConfirmSignoutModal: FunctionComponent = ({ application, viewContro const [deleteLocalBackups, setDeleteLocalBackups] = useState(false) const cancelRef = useRef(null) - function closeDialog() { + const closeDialog = useCallback(() => { viewControllerManager.accountMenuController.setSigningOut(false) - } + }, [viewControllerManager.accountMenuController]) const [localBackupsCount, setLocalBackupsCount] = useState(0) @@ -31,6 +32,15 @@ const ConfirmSignoutModal: FunctionComponent = ({ application, viewContro const workspaces = applicationGroup.getDescriptors() const showWorkspaceWarning = workspaces.length > 1 && isDesktopApplication() + const confirm = useCallback(() => { + if (deleteLocalBackups) { + application.signOutAndDeleteLocalBackups().catch(console.error) + } else { + application.user.signOut().catch(console.error) + } + closeDialog() + }, [application, closeDialog, deleteLocalBackups]) + return (
@@ -38,7 +48,12 @@ const ConfirmSignoutModal: FunctionComponent = ({ application, viewContro
- Sign out workspace? + + Sign out workspace? + +

{STRING_SIGN_OUT_CONFIRMATION}

@@ -87,18 +102,7 @@ const ConfirmSignoutModal: FunctionComponent = ({ application, viewContro -
diff --git a/packages/web/src/javascripts/Components/OtherSessionsSignOut/OtherSessionsSignOut.tsx b/packages/web/src/javascripts/Components/OtherSessionsSignOut/OtherSessionsSignOut.tsx index 041a2dbbf..26424d17f 100644 --- a/packages/web/src/javascripts/Components/OtherSessionsSignOut/OtherSessionsSignOut.tsx +++ b/packages/web/src/javascripts/Components/OtherSessionsSignOut/OtherSessionsSignOut.tsx @@ -4,6 +4,7 @@ import { WebApplication } from '@/Application/Application' import { ViewControllerManager } from '@/Controllers/ViewControllerManager' import { observer } from 'mobx-react-lite' import Button from '@/Components/Button/Button' +import Icon from '../Icon/Icon' type Props = { application: WebApplication @@ -17,6 +18,14 @@ const ConfirmOtherSessionsSignOut = observer(({ application, viewControllerManag viewControllerManager.accountMenuController.setOtherSessionsSignOut(false) }, [viewControllerManager]) + const confirm = useCallback(() => { + application.revokeAllOtherSessions().catch(console.error) + closeDialog() + application.alertService + .alert('You have successfully revoked your sessions from other devices.', undefined, 'Finish') + .catch(console.error) + }, [application, closeDialog]) + return (
@@ -24,7 +33,12 @@ const ConfirmOtherSessionsSignOut = observer(({ application, viewControllerManag
- End all other sessions? + + End all other sessions? + +

This action will sign out all other devices signed into your account, and remove your data from @@ -36,17 +50,7 @@ const ConfirmOtherSessionsSignOut = observer(({ application, viewControllerManag -

diff --git a/packages/web/src/javascripts/Components/SessionsModal/SessionsModal.tsx b/packages/web/src/javascripts/Components/SessionsModal/SessionsModal.tsx index 4c12eb5a4..ddb57c591 100644 --- a/packages/web/src/javascripts/Components/SessionsModal/SessionsModal.tsx +++ b/packages/web/src/javascripts/Components/SessionsModal/SessionsModal.tsx @@ -10,6 +10,7 @@ import ModalDialogLabel from '../Shared/ModalDialogLabel' import ModalDialogDescription from '../Shared/ModalDialogDescription' import Spinner from '@/Components/Spinner/Spinner' import Button from '@/Components/Button/Button' +import Icon from '../Icon/Icon' type Session = RemoteSession & { revoking?: true @@ -102,6 +103,9 @@ const SessionsModalContent: FunctionComponent<{ [], ) + const closeRevokeConfirmationDialog = () => { + setRevokingSessionUuid('') + } return ( <> @@ -154,19 +158,21 @@ const SessionsModalContent: FunctionComponent<{ {confirmRevokingSessionUuid && ( - { - setRevokingSessionUuid('') - }} - leastDestructiveRef={cancelRevokeRef} - className="p-0" - > +
- {SessionStrings.RevokeTitle} + + {SessionStrings.RevokeTitle} + +

{SessionStrings.RevokeText}