import DOMPurify from 'dompurify'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { appHost } from 'components/apphost'; import Page from 'components/Page'; import toast from 'components/toast/toast'; import { AppFeature } from 'constants/appFeature'; import LinkButton from 'elements/emby-button/LinkButton'; import globalize from 'lib/globalize'; import { ConnectionState, ServerConnections } from 'lib/jellyfin-apiclient'; interface ConnectionErrorPageProps { state: ConnectionState } const ConnectionErrorPage: FC = ({ state }) => { const [ title, setTitle ] = useState(); const [ htmlMessage, setHtmlMessage ] = useState(); const [ message, setMessage ] = useState(); const [ isConnectDisabled, setIsConnectDisabled ] = useState(false); const onForceConnect = useCallback(async () => { setIsConnectDisabled(true); try { const server = ServerConnections.getLastUsedServer(); await ServerConnections.updateSavedServerId(server); window.location.reload(); } catch (err) { console.error('[ConnectionErrorPage] Failed to force connect to server', err); toast(globalize.translate('HeaderConnectionFailure')); setIsConnectDisabled(false); } }, []); useEffect(() => { switch (state) { case ConnectionState.ServerMismatch: setTitle(globalize.translate('HeaderServerMismatch')); setHtmlMessage(undefined); setMessage(globalize.translate('MessageServerMismatch')); return; case ConnectionState.ServerUpdateNeeded: setTitle(globalize.translate('HeaderUpdateRequired')); setHtmlMessage(globalize.translate( 'ServerUpdateNeeded', 'jellyfin.org/downloads/server' )); setMessage(undefined); return; case ConnectionState.Unavailable: setTitle(globalize.translate('HeaderServerUnavailable')); setHtmlMessage(undefined); setMessage(globalize.translate('MessageUnableToConnectToServer')); } }, [ state ]); if (!title) return; return (

{title}

{htmlMessage && (

)} {message && (

{message}

)} {appHost.supports(AppFeature.MultiServer) && ( {globalize.translate('ButtonChangeServer')} )} {state === ConnectionState.ServerMismatch && ( {globalize.translate('ConnectAnyway')} )}
); }; export default ConnectionErrorPage;