mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-08-18 09:27:02 +00:00
fix: use correct server state and improve checks for server running/not running
This commit is contained in:
parent
e3a622fe88
commit
19a597aa78
6 changed files with 36 additions and 27 deletions
18
src/common/getStreamingServerWarning.ts
Normal file
18
src/common/getStreamingServerWarning.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright (C) 2017-2024 Smart code 203358507
|
||||
|
||||
const isStreamingServerNotRunning = (streamingServer: StreamingServer): boolean => (
|
||||
streamingServer.state === null ||
|
||||
streamingServer.state.type === 'Err' ||
|
||||
(streamingServer.state.type === 'Ready' && streamingServer.state.content === 'notRunning')
|
||||
);
|
||||
|
||||
const getStreamingServerWarning = (streamingServer: StreamingServer, profile: Profile): boolean => {
|
||||
if (!isStreamingServerNotRunning(streamingServer)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const dismissedAt = profile.settings.streamingServerWarningDismissed;
|
||||
return dismissedAt === null || isNaN(dismissedAt.getTime()) || dismissedAt.getTime() < Date.now();
|
||||
};
|
||||
|
||||
export default getStreamingServerWarning;
|
||||
|
|
@ -10,6 +10,7 @@ const { DiscordProvider, useDiscord, EMPTY_DISCORD_TIMESTAMPS, getPlaybackDiscor
|
|||
const CONSTANTS = require('./CONSTANTS');
|
||||
const { withCoreSuspender, useCoreSuspender } = require('./CoreSuspender');
|
||||
const getVisibleChildrenRange = require('./getVisibleChildrenRange');
|
||||
const { default: getStreamingServerWarning } = require('./getStreamingServerWarning');
|
||||
const interfaceLanguages = require('./interfaceLanguages.json');
|
||||
const languageNames = require('./languageNames.json');
|
||||
const languages = require('./languages');
|
||||
|
|
@ -56,6 +57,7 @@ module.exports = {
|
|||
withCoreSuspender,
|
||||
useCoreSuspender,
|
||||
getVisibleChildrenRange,
|
||||
getStreamingServerWarning,
|
||||
interfaceLanguages,
|
||||
languageNames,
|
||||
languages,
|
||||
|
|
|
|||
|
|
@ -48,8 +48,9 @@ const usePlayUrl = () => {
|
|||
|
||||
const parsed = magnet.decode(trimmed);
|
||||
if (parsed && typeof parsed.infoHash === 'string') {
|
||||
const serverReady = streamingServer.settings !== null
|
||||
&& streamingServer.settings.type === 'Ready';
|
||||
const serverReady = streamingServer.state !== null
|
||||
&& streamingServer.state.type === 'Ready'
|
||||
&& streamingServer.state.content === 'running';
|
||||
if (!serverReady) {
|
||||
toast.show({
|
||||
type: 'error',
|
||||
|
|
@ -63,7 +64,7 @@ const usePlayUrl = () => {
|
|||
}
|
||||
|
||||
return false;
|
||||
}, [streamingServer.settings, createTorrentFromMagnet]);
|
||||
}, [streamingServer.state, createTorrentFromMagnet]);
|
||||
|
||||
return { handlePlayUrl };
|
||||
};
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ const { default: usePlayUrl } = require('stremio/common/usePlayUrl');
|
|||
const useToast = require('stremio/common/Toast/useToast');
|
||||
const { withCoreSuspender } = require('stremio/common/CoreSuspender');
|
||||
const useStreamingServer = require('stremio/common/useStreamingServer');
|
||||
const { default: getStreamingServerWarning } = require('stremio/common/getStreamingServerWarning');
|
||||
const styles = require('./styles');
|
||||
|
||||
const NavMenuContent = ({ onClick }) => {
|
||||
|
|
@ -27,16 +28,10 @@ const NavMenuContent = ({ onClick }) => {
|
|||
const toast = useToast();
|
||||
const [fullscreen, requestFullscreen, exitFullscreen, , supported] = useFullscreen();
|
||||
const [, isAndroidPWA] = usePWA();
|
||||
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 showStreamingServerWarning = React.useMemo(
|
||||
() => getStreamingServerWarning(streamingServer, profile),
|
||||
[profile.settings, streamingServer.state]
|
||||
);
|
||||
const logoutButtonOnClick = React.useCallback(() => {
|
||||
core.transport.dispatch({
|
||||
action: 'Ctx',
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ const React = require('react');
|
|||
const classnames = require('classnames');
|
||||
const debounce = require('lodash.debounce');
|
||||
const useTranslate = require('stremio/common/useTranslate');
|
||||
const { useStreamingServer, useNotifications, withCoreSuspender, getVisibleChildrenRange, useProfile } = require('stremio/common');
|
||||
const { useStreamingServer, useNotifications, withCoreSuspender, getVisibleChildrenRange, getStreamingServerWarning, useProfile } = require('stremio/common');
|
||||
const { ContinueWatchingItem, EventModal, MainNavBars, MetaItem, MetaRow } = require('stremio/components');
|
||||
const useBoard = require('./useBoard');
|
||||
const useContinueWatchingPreview = require('./useContinueWatchingPreview');
|
||||
|
|
@ -22,17 +22,10 @@ const Board = () => {
|
|||
const profile = useProfile();
|
||||
const boardCatalogsOffset = continueWatchingPreview.items.length > 0 ? 1 : 0;
|
||||
const scrollContainerRef = React.useRef();
|
||||
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 showStreamingServerWarning = React.useMemo(
|
||||
() => getStreamingServerWarning(streamingServer, profile),
|
||||
[profile.settings, streamingServer.state]
|
||||
);
|
||||
const onVisibleRangeChange = React.useCallback(() => {
|
||||
const range = getVisibleChildrenRange(scrollContainerRef.current);
|
||||
if (range === null) {
|
||||
|
|
|
|||
|
|
@ -23,8 +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 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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue