diff --git a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js index a94db6b27..72a8443de 100644 --- a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js +++ b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js @@ -23,12 +23,15 @@ const NavMenuContent = ({ onClick }) => { const { createTorrentFromMagnet } = useTorrent(); const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); const [isIOSPWA, isAndroidPWA] = usePWA(); - const streamingServerWarningDismissed = React.useMemo(() => { - return (streamingServer.state !== null && streamingServer.state.type === 'Ready' && streamingServer.state.content === 'running') - || ( + 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() - ); + profile.settings.streamingServerWarningDismissed.getTime() < Date.now() + ) + : false; }, [profile.settings, streamingServer.state]); const logoutButtonOnClick = React.useCallback(() => { core.transport.dispatch({ @@ -47,7 +50,7 @@ const NavMenuContent = ({ onClick }) => { } }, []); return ( -
+
{ const profile = useProfile(); const boardCatalogsOffset = continueWatchingPreview.items.length > 0 ? 1 : 0; const scrollContainerRef = React.useRef(); - - const [showStreamingServerWarning, setStreamingServerWarning] = React.useState(true); - - React.useEffect(() => { - setStreamingServerWarning(streamingServer.state === null || streamingServer.state.type === 'Err' || (streamingServer.state.type === 'Ready' && streamingServer.state.content === 'notRunning') - ? ( + 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.streamingServerWarningDismissed.getTime() < Date.now() + ) + : false; }, [profile.settings, streamingServer.state]); const onVisibleRangeChange = React.useCallback(() => { diff --git a/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx b/src/routes/Settings/Streaming/URLsManager/Item/Item.tsx index ec712a78b..2b674a804 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.state]); + const serverError = useMemo(() => streamingServer.state?.type === 'Err' || (streamingServer.state?.type === 'Ready' && streamingServer.state.content === 'notRunning'), [streamingServer.state]); 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 }