import { RoundIconButton } from '@/components/RoundIconButton'; import { TitleBar, Title } from '@/components/TitleBar'; import { FunctionComponent } from 'preact'; import { observer } from 'mobx-react-lite'; import { AccountPreferences, HelpAndFeedback, Listed, General, Security, } from './panes'; import { PreferencesMenu } from './PreferencesMenu'; import { PreferencesMenuView } from './PreferencesMenuView'; import { WebApplication } from '@/ui_models/application'; import { MfaProps } from './panes/two-factor-auth/MfaProps'; import { AppState } from '@/ui_models/app_state'; import { useEffect, useMemo } from 'preact/hooks'; import { Backups } from '@/components/Preferences/panes/Backups'; import { Appearance } from './panes/Appearance'; interface PreferencesProps extends MfaProps { application: WebApplication; appState: AppState; closePreferences: () => void; } const PaneSelector: FunctionComponent< PreferencesProps & { menu: PreferencesMenu } > = observer(({ menu, appState, application, mfaProvider, userProvider }) => { switch (menu.selectedPaneId) { case 'general': return ( ); case 'account': return ( ); case 'appearance': return ; case 'security': return ( ); case 'backups': return ; case 'listed': return ; case 'shortcuts': return null; case 'accessibility': return null; case 'get-free-month': return null; case 'help-feedback': return ; default: return ( ); } }); const PreferencesCanvas: FunctionComponent< PreferencesProps & { menu: PreferencesMenu } > = observer((props) => (
)); export const PreferencesView: FunctionComponent = observer( (props) => { const menu = useMemo( () => new PreferencesMenu( props.application, props.appState.enableUnfinishedFeatures ), [props.appState.enableUnfinishedFeatures, props.application] ); useEffect(() => { menu.selectPane(props.appState.preferences.currentPane); const removeEscKeyObserver = props.application.io.addKeyObserver({ key: 'Escape', onKeyDown: (event) => { event.preventDefault(); props.closePreferences(); }, }); return () => { removeEscKeyObserver(); }; }, [props, menu]); return (
{/* div is added so flex justify-between can center the title */}
Your preferences for Standard Notes { props.closePreferences(); }} type="normal" icon="close" />
); } );