diff --git a/src/components/ConnectionErrorPage.tsx b/src/components/ConnectionErrorPage.tsx index 2b7278eca..3dae182b7 100644 --- a/src/components/ConnectionErrorPage.tsx +++ b/src/components/ConnectionErrorPage.tsx @@ -1,6 +1,8 @@ import React, { FC, useEffect, useState } from 'react'; +import { appHost } from 'components/apphost'; import Page from 'components/Page'; +import LinkButton from 'elements/emby-button/LinkButton'; import globalize from 'lib/globalize'; import { ConnectionState } from 'lib/jellyfin-apiclient'; @@ -13,14 +15,22 @@ const ConnectionErrorPage: FC = ({ }) => { const [ title, setTitle ] = useState(); const [ htmlMessage, setHtmlMessage ] = useState(); + const [ message, setMessage ] = useState(); useEffect(() => { - if (state === ConnectionState.ServerUpdateNeeded) { - setTitle(globalize.translate('HeaderUpdateRequired')); - setHtmlMessage(globalize.translate( - 'ServerUpdateNeeded', - 'jellyfin.org/downloads/server' - )); + switch (state) { + 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 ]); @@ -37,6 +47,17 @@ const ConnectionErrorPage: FC = ({ {htmlMessage && (

)} + {message && ( +

{message}

+ )} + {appHost.supports('multiserver') && ( + + {globalize.translate('ButtonChangeServer')} + + )} ); diff --git a/src/components/ConnectionRequired.tsx b/src/components/ConnectionRequired.tsx index 290a6c8d5..9fd4cd45d 100644 --- a/src/components/ConnectionRequired.tsx +++ b/src/components/ConnectionRequired.tsx @@ -184,7 +184,7 @@ const ConnectionRequired: FunctionComponent = ({ console.debug('[ConnectionRequired] connection state', firstConnection?.State); ServerConnections.firstConnection = true; - if (firstConnection?.State === ConnectionState.ServerUpdateNeeded) { + if ([ ConnectionState.ServerUpdateNeeded, ConnectionState.Unavailable ].includes(firstConnection?.State)) { setErrorState(firstConnection.State); } else if (level === AccessLevel.Wizard) { handleWizard(firstConnection) diff --git a/src/lib/jellyfin-apiclient/connectionManager.js b/src/lib/jellyfin-apiclient/connectionManager.js index 15d6c8591..7c962c952 100644 --- a/src/lib/jellyfin-apiclient/connectionManager.js +++ b/src/lib/jellyfin-apiclient/connectionManager.js @@ -423,10 +423,6 @@ export default class ConnectionManager { // See if we have any saved credentials and can auto sign in if (firstServer) { return self.connectToServer(firstServer, options).then((result) => { - if (result.State === ConnectionState.Unavailable) { - result.State = ConnectionState.ServerSelection; - } - console.log('resolving connectToServers with result.State: ' + result.State); return result; }); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index ab5b5f05c..6b6fd9324 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -515,6 +515,7 @@ "HeaderSeriesOptions": "Series Options", "HeaderSeriesStatus": "Series Status", "HeaderServerAddressSettings": "Server Address Settings", + "HeaderServerUnavailable": "Server Unavailable", "HeaderSetupLibrary": "Set up your media libraries", "HeaderSortBy": "Sort By", "HeaderSortOrder": "Sort Order",