import { observer } from 'mobx-react-lite' import { useCallback, FunctionComponent, KeyboardEventHandler } from 'react' import { WebApplicationGroup } from '@/Application/WebApplicationGroup' import { AccountMenuPane } from './AccountMenuPane' import MenuPaneSelector from './MenuPaneSelector' import { KeyboardKey } from '@standardnotes/ui-services' import { useApplication } from '../ApplicationProvider' export type AccountMenuProps = { onClickOutside: () => void mainApplicationGroup: WebApplicationGroup } const AccountMenu: FunctionComponent = ({ mainApplicationGroup }) => { const application = useApplication() const { currentPane } = application.accountMenuController const closeAccountMenu = useCallback(() => { application.accountMenuController.closeAccountMenu() }, [application]) const setCurrentPane = useCallback( (pane: AccountMenuPane) => { application.accountMenuController.setCurrentPane(pane) }, [application], ) const handleKeyDown: KeyboardEventHandler = useCallback( (event) => { if (event.key === KeyboardKey.Escape) { if (currentPane === AccountMenuPane.GeneralMenu) { closeAccountMenu() } else if (currentPane === AccountMenuPane.ConfirmPassword) { setCurrentPane(AccountMenuPane.Register) } else { setCurrentPane(AccountMenuPane.GeneralMenu) } } }, [closeAccountMenu, currentPane, setCurrentPane], ) return (
) } export default observer(AccountMenu)