diff --git a/app/_layout.tsx b/app/_layout.tsx index 8d7aed55..cceafcfd 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -24,7 +24,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; const BackgroundFetch = !Platform.isTV ? require("expo-background-fetch") : null; import * as FileSystem from "expo-file-system"; const Notifications = !Platform.isTV ? require("expo-notifications") : null; -import { router, Stack } from "expo-router"; +import { router, Stack, useSegments } from "expo-router"; import * as SplashScreen from "expo-splash-screen"; import * as ScreenOrientation from "@/packages/expo-screen-orientation"; const TaskManager = !Platform.isTV ? require("expo-task-manager") : null; @@ -259,6 +259,7 @@ function Layout() { const [settings] = useSettings(); const [user] = useAtom(userAtom); const appState = useRef(AppState.currentState); + const segments = useSegments(); useEffect(() => { i18n.changeLanguage(settings?.preferedLanguage ?? getLocales()[0].languageCode ?? "en"); @@ -277,15 +278,17 @@ function Layout() { }, []); useEffect(() => { - // If the user has auto rotate enabled, unlock the orientation if (Platform.isTV) return; + if ("direct-player" in segments) return; + + // If the user has auto rotate enabled, unlock the orientation if (settings.followDeviceOrientation === true) { ScreenOrientation.unlockAsync(); } else { // If the user has auto rotate disabled, lock the orientation to portrait ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP); } - }, [settings]); + }, [settings.followDeviceOrientation, segments]); useEffect(() => { const subscription = AppState.addEventListener("change", (nextAppState) => { diff --git a/hooks/useOrientationSettings.ts b/hooks/useOrientationSettings.ts deleted file mode 100644 index b58a06ce..00000000 --- a/hooks/useOrientationSettings.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { useSettings } from "@/utils/atoms/settings"; -import * as ScreenOrientation from "@/packages/expo-screen-orientation"; -import { useEffect } from "react"; -import { Platform } from "react-native"; - -export const useOrientationSettings = () => { - if (Platform.isTV) return; - - const [settings] = useSettings(); - - useEffect(() => { - if (settings?.followDeviceOrientation) { - ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_RIGHT); - } else if (settings?.defaultVideoOrientation) { - ScreenOrientation.lockAsync(settings.defaultVideoOrientation); - } - - return () => { - if (settings?.followDeviceOrientation) { - ScreenOrientation.unlockAsync(); - } else { - ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP); - } - }; - }, [settings]); -};