From 0785fbfc51887bdeea71c565f68a42122bc7124f Mon Sep 17 00:00:00 2001 From: "Timothy Z." Date: Mon, 4 May 2026 19:49:14 +0300 Subject: [PATCH 1/6] feat: improve detection fullscreen compAtibility --- src/common/Fullscreen/FullscreenContext.ts | 1 + src/common/Fullscreen/FullscreenProvider.tsx | 6 ++++-- src/components/NavBar/HorizontalNavBar/HorizontalNavBar.js | 6 ++---- .../NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js | 6 +++--- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/common/Fullscreen/FullscreenContext.ts b/src/common/Fullscreen/FullscreenContext.ts index 1c9599ffb..b2be6b3a8 100644 --- a/src/common/Fullscreen/FullscreenContext.ts +++ b/src/common/Fullscreen/FullscreenContext.ts @@ -7,6 +7,7 @@ export type FullscreenContextValue = readonly [ requestFullscreen: () => Promise | void, exitFullscreen: () => void, toggleFullscreen: () => void, + supported: boolean, ]; const FullscreenContext = createContext(null); diff --git a/src/common/Fullscreen/FullscreenProvider.tsx b/src/common/Fullscreen/FullscreenProvider.tsx index 2300602c5..9a0b9f876 100644 --- a/src/common/Fullscreen/FullscreenProvider.tsx +++ b/src/common/Fullscreen/FullscreenProvider.tsx @@ -94,9 +94,11 @@ const FullscreenProvider = ({ children }: Props) => { }; }, [shell, toggleFullscreen, exitFullscreen, escExitFullscreen]); + const supported = shell.active || document.fullscreenEnabled === true; + const value = useMemo( - () => [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen], - [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen] + () => [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen, supported], + [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen, supported] ); return ( diff --git a/src/components/NavBar/HorizontalNavBar/HorizontalNavBar.js b/src/components/NavBar/HorizontalNavBar/HorizontalNavBar.js index b1644c2b3..c9679ecf8 100644 --- a/src/components/NavBar/HorizontalNavBar/HorizontalNavBar.js +++ b/src/components/NavBar/HorizontalNavBar/HorizontalNavBar.js @@ -6,7 +6,6 @@ const classnames = require('classnames'); const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button, Image } = require('stremio/components'); const { useFullscreen } = require('stremio/common/Fullscreen'); -const usePWA = require('stremio/common/usePWA'); const { useHorizontalNavGamepadNavigation } = require('stremio/services/GamepadNavigation'); const SearchBar = require('./SearchBar'); const NavMenu = require('./NavMenu'); @@ -17,8 +16,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto const backButtonOnClick = React.useCallback(() => { window.history.back(); }, []); - const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); - const [isIOSPWA] = usePWA(); + const [fullscreen, requestFullscreen, exitFullscreen, , supported] = useFullscreen(); const renderNavMenuLabel = React.useCallback(({ ref, className, onClick, children, }) => ( diff --git a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js index 6615e5b76..e35696584 100644 --- a/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js +++ b/src/components/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js @@ -23,8 +23,8 @@ const NavMenuContent = ({ onClick }) => { const streamingServer = useStreamingServer(); const { handlePlayUrl } = usePlayUrl(); const toast = useToast(); - const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); - const [isIOSPWA, isAndroidPWA] = usePWA(); + const [fullscreen, requestFullscreen, exitFullscreen, , supported] = useFullscreen(); + const [, isAndroidPWA] = usePWA(); const streamingServerWarningDismissed = React.useMemo(() => { return streamingServer.settings !== null && streamingServer.settings.type === 'Ready' || ( !isNaN(profile.settings.streamingServerWarningDismissed.getTime()) && @@ -79,7 +79,7 @@ const NavMenuContent = ({ onClick }) => { { - !isIOSPWA && !isAndroidPWA ? + supported && !isAndroidPWA ?