import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import { Divider, List, ListItemButton, MenuItem, Select, Switch } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { ListItem, ListItemText } from '@/components/ListItem'; import { hunspellLanguagesMap } from '@/constants/hunspellLanguages'; import { usePromiseValue } from '@/helpers/useServiceValue'; import { usePreferenceObservable } from '@services/preferences/hooks'; import { WindowNames } from '@services/windows/WindowProperties'; import { InputLabel, Paper, SectionTitle } from '../PreferenceComponents'; import type { ISectionProps } from '../useSections'; export function Languages(props: Partial & { languageSelectorOnly?: boolean }): React.JSX.Element { const { t } = useTranslation(); const preference = usePreferenceObservable(); const platformAndMap = usePromiseValue( async (): Promise<[string | undefined, Record | undefined]> => await Promise.all([window.service.context.get('platform'), window.service.context.get('supportedLanguagesMap')]), [undefined, undefined], ); const platform = platformAndMap?.[0]; const supportedLanguagesMap = platformAndMap?.[1]; return ( <> {t('Preference.Languages')} {preference === undefined || platform === undefined || supportedLanguagesMap === undefined || preference.language === undefined ? {t('Loading')} : ( <> {t('Preference.Languages')} {props.languageSelectorOnly !== true && ( <> { await window.service.preference.set('spellcheck', event.target.checked); props.requestRestartCountDown?.(); }} /> } > {platform !== 'darwin' && ( <> { await window.service.window.open(WindowNames.spellcheck); }} > hunspellLanguagesMap[code]).join(' | ')} /> )} )} )} ); }