import { FunctionComponent, useCallback, useEffect, useRef, useState } from 'react' import { STRING_SIGN_OUT_CONFIRMATION } from '@/Constants/Strings' import { WebApplication } from '@/Application/Application' import { ViewControllerManager } from '@/Controllers/ViewControllerManager' 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' import AlertDialog from '../AlertDialog/AlertDialog' type Props = { application: WebApplication viewControllerManager: ViewControllerManager applicationGroup: ApplicationGroup } const ConfirmSignoutModal: FunctionComponent = ({ application, viewControllerManager, applicationGroup }) => { const [deleteLocalBackups, setDeleteLocalBackups] = useState(false) const cancelRef = useRef(null) const closeDialog = useCallback(() => { viewControllerManager.accountMenuController.setSigningOut(false) }, [viewControllerManager.accountMenuController]) const [localBackupsCount, setLocalBackupsCount] = useState(0) useEffect(() => { application.desktopDevice?.localBackupsCount().then(setLocalBackupsCount).catch(console.error) }, [viewControllerManager.accountMenuController.signingOut, application.desktopDevice]) 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 (
Sign out workspace?

{STRING_SIGN_OUT_CONFIRMATION}

{showWorkspaceWarning && ( <>

Note: Because you have other workspaces signed in, this sign out may leave logs and other metadata of your session on this device. For a more robust sign out that performs a hard clear of all app-related data, use the Sign out all workspaces option under Switch workspace.

)}
{localBackupsCount > 0 && (
)}
) } ConfirmSignoutModal.displayName = 'ConfirmSignoutModal' const ConfirmSignoutContainer = (props: Props) => { if (!props.viewControllerManager.accountMenuController.signingOut) { return null } return } export default observer(ConfirmSignoutContainer)