Merge pull request #6812 from thornbill/fix-server-unavailable

Fix unavailable server handling
This commit is contained in:
Bill Thornton
2025-04-30 11:13:20 -04:00
committed by GitHub
4 changed files with 29 additions and 11 deletions
+27 -6
View File
@@ -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<ConnectionErrorPageProps> = ({
}) => {
const [ title, setTitle ] = useState<string>();
const [ htmlMessage, setHtmlMessage ] = useState<string>();
const [ message, setMessage ] = useState<string>();
useEffect(() => {
if (state === ConnectionState.ServerUpdateNeeded) {
setTitle(globalize.translate('HeaderUpdateRequired'));
setHtmlMessage(globalize.translate(
'ServerUpdateNeeded',
'<a href="https://jellyfin.org/downloads/server/">jellyfin.org/downloads/server</a>'
));
switch (state) {
case ConnectionState.ServerUpdateNeeded:
setTitle(globalize.translate('HeaderUpdateRequired'));
setHtmlMessage(globalize.translate(
'ServerUpdateNeeded',
'<a href="https://jellyfin.org/downloads/server/">jellyfin.org/downloads/server</a>'
));
setMessage(undefined);
return;
case ConnectionState.Unavailable:
setTitle(globalize.translate('HeaderServerUnavailable'));
setHtmlMessage(undefined);
setMessage(globalize.translate('MessageUnableToConnectToServer'));
}
}, [ state ]);
@@ -37,6 +47,17 @@ const ConnectionErrorPage: FC<ConnectionErrorPageProps> = ({
{htmlMessage && (
<p dangerouslySetInnerHTML={{ __html: htmlMessage }} />
)}
{message && (
<p>{message}</p>
)}
{appHost.supports('multiserver') && (
<LinkButton
className='raised'
href='/selectserver'
>
{globalize.translate('ButtonChangeServer')}
</LinkButton>
)}
</div>
</Page>
);
+1 -1
View File
@@ -184,7 +184,7 @@ const ConnectionRequired: FunctionComponent<ConnectionRequiredProps> = ({
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)
@@ -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;
});
+1
View File
@@ -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",