import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import { Divider, List, ListItemButton, Switch } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { ListItem, ListItemText } from '@/components/ListItem'; import { latestStableUpdateUrl } from '@/constants/urls'; import { usePreferenceObservable } from '@services/preferences/hooks'; import { getUpdaterMessage, useUpdaterObservable } from '@services/updater/hooks'; import { IUpdaterStatus } from '@services/updater/interface'; import { Paper, SectionTitle } from '../PreferenceComponents'; import type { ISectionProps } from '../useSections'; export function Updates(props: Required): React.JSX.Element { const { t } = useTranslation(); const preference = usePreferenceObservable(); const updaterMetaData = useUpdaterObservable(); return ( <> {t('Preference.Network')} {preference === undefined || updaterMetaData === undefined ? {t('Loading')} : ( <> { await window.service.native.openURI(updaterMetaData.info?.latestReleasePageUrl ?? latestStableUpdateUrl); } : async () => { await window.service.updater.checkForUpdates(); }} disabled={updaterMetaData.status === IUpdaterStatus.checkingForUpdate || updaterMetaData.status === IUpdaterStatus.downloadProgress} > {updaterMetaData.status !== undefined && ( )} { await window.service.preference.set('allowPrerelease', event.target.checked); await window.service.updater.checkForUpdates(); }} /> } > )} ); }