diff --git a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js index de0a02212..72a8443de 100644 --- a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js +++ b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js @@ -23,12 +23,16 @@ const NavMenuContent = ({ onClick }) => { const { createTorrentFromMagnet } = useTorrent(); const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); const [isIOSPWA, isAndroidPWA] = usePWA(); - const streamingServerWarningDismissed = React.useMemo(() => { - return streamingServer.settings !== null && streamingServer.settings.type === 'Ready' || ( - !isNaN(profile.settings.streamingServerWarningDismissed.getTime()) && - profile.settings.streamingServerWarningDismissed.getTime() > Date.now() - ); - }, [profile.settings, streamingServer.settings]); + const showStreamingServerWarning = React.useMemo(() => { + return streamingServer.state === null || + streamingServer.state.type === 'Err' || + (streamingServer.state.type === 'Ready' && streamingServer.state.content === 'notRunning') ? + ( + isNaN(profile.settings.streamingServerWarningDismissed.getTime()) || + profile.settings.streamingServerWarningDismissed.getTime() < Date.now() + ) + : false; + }, [profile.settings, streamingServer.state]); const logoutButtonOnClick = React.useCallback(() => { core.transport.dispatch({ action: 'Ctx', @@ -41,12 +45,12 @@ const NavMenuContent = ({ onClick }) => { try { const clipboardText = await navigator.clipboard.readText(); createTorrentFromMagnet(clipboardText); - } catch(e) { + } catch (e) { console.error(e); } }, []); return ( -
+
{ null }
- - - -
- - { profile.auth !== null ? - : null diff --git a/src/routes/Board/Board.js b/src/routes/Board/Board.js index cb2888a52..ab103c42d 100644 --- a/src/routes/Board/Board.js +++ b/src/routes/Board/Board.js @@ -23,10 +23,16 @@ const Board = () => { const boardCatalogsOffset = continueWatchingPreview.items.length > 0 ? 1 : 0; const scrollContainerRef = React.useRef(); const showStreamingServerWarning = React.useMemo(() => { - return streamingServer.settings !== null && streamingServer.settings.type === 'Err' && ( - isNaN(profile.settings.streamingServerWarningDismissed.getTime()) || - profile.settings.streamingServerWarningDismissed.getTime() < Date.now()); - }, [profile.settings, streamingServer.settings]); + return streamingServer.state === null || + streamingServer.state.type === 'Err' || + (streamingServer.state.type === 'Ready' && streamingServer.state.content === 'notRunning') ? + ( + isNaN(profile.settings.streamingServerWarningDismissed.getTime()) || + profile.settings.streamingServerWarningDismissed.getTime() < Date.now() + ) + : false; + }, [profile.settings, streamingServer.state]); + const onVisibleRangeChange = React.useCallback(() => { const range = getVisibleChildrenRange(scrollContainerRef.current); if (range === null) { diff --git a/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx b/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx index ec712a78b..c058a032c 100644 --- a/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx +++ b/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx @@ -23,6 +23,8 @@ const Item = ({ url }: Props) => { const selected = useMemo(() => profile.settings.streamingServerUrl === url, [url, profile.settings]); const defaultUrl = useMemo(() => url === DEFAULT_STREAMING_SERVER_URL, [url]); + const serverReady = useMemo(() => streamingServer.state?.type === 'Ready' && streamingServer.state.content === 'running', [streamingServer]); + const serverError = useMemo(() => streamingServer.state?.type === 'Err' || (streamingServer.state?.type === 'Ready' && streamingServer.state.content === 'notRunning'), [streamingServer]); const handleDelete = useCallback(() => { deleteServerUrl(url); @@ -43,19 +45,19 @@ const Item = ({ url }: Props) => { { selected ?
-
+
{ - streamingServer.settings === null ? + streamingServer.state === null ? 'NotLoaded' : - streamingServer.settings.type === 'Ready' ? + serverReady ? t('SETTINGS_SERVER_STATUS_ONLINE') : - streamingServer.settings.type === 'Err' ? + serverError ? t('SETTINGS_SERVER_STATUS_ERROR') : - streamingServer.settings.type + streamingServer.state.type }
diff --git a/src/types/models/StremingServer.d.ts b/src/types/models/StremingServer.d.ts index 6e6f96f39..6485d36b2 100644 --- a/src/types/models/StremingServer.d.ts +++ b/src/types/models/StremingServer.d.ts @@ -127,4 +127,5 @@ type StreamingServer = { playbackDevices: Loadable | null, networkInfo: Loadable | null, deviceInfo: Loadable | null, + state: Loadable | null };