diff --git a/components/ItemContent.tsx b/components/ItemContent.tsx index a93c8e4e..9c65f8ed 100644 --- a/components/ItemContent.tsx +++ b/components/ItemContent.tsx @@ -32,20 +32,20 @@ import { Chromecast } from "./Chromecast"; import { ItemHeader } from "./ItemHeader"; import { MediaSourceSelector } from "./MediaSourceSelector"; import { MoreMoviesWithActor } from "./MoreMoviesWithActor"; +import { useOrientation } from "@/hooks/useOrientation"; export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( ({ item }) => { const [api] = useAtom(apiAtom); - const { setPlaySettings, playUrl, playSettings } = usePlaySettings(); - const [settings] = useSettings(); + + const { setPlaySettings, playSettings } = usePlaySettings(); + const { orientation } = useOrientation(); const navigation = useNavigation(); + const insets = useSafeAreaInsets(); + const [settings] = useSettings(); const [loadingLogo, setLoadingLogo] = useState(true); - const [orientation, setOrientation] = useState( - ScreenOrientation.Orientation.PORTRAIT_UP - ); - useFocusEffect( useCallback(() => { if (!settings) return; @@ -111,22 +111,6 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( })); }; - useEffect(() => { - const subscription = ScreenOrientation.addOrientationChangeListener( - (event) => { - setOrientation(event.orientationInfo.orientation); - } - ); - - ScreenOrientation.getOrientationAsync().then((initialOrientation) => { - setOrientation(initialOrientation); - }); - - return () => { - ScreenOrientation.removeOrientationChangeListener(subscription); - }; - }, []); - const [headerHeight, setHeaderHeight] = useState(350); useImageColors({ item }); @@ -149,13 +133,9 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( }, [item]); useEffect(() => { - // If landscape - if (orientation !== ScreenOrientation.Orientation.PORTRAIT_UP) { + if (orientation !== ScreenOrientation.OrientationLock.PORTRAIT_UP) setHeaderHeight(230); - return; - } - - if (item.Type === "Movie") setHeaderHeight(500); + else if (item.Type === "Movie") setHeaderHeight(500); else setHeaderHeight(350); }, [item.Type, orientation]); @@ -165,8 +145,6 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( return Boolean(logoUrl && loadingLogo); }, [loadingLogo, logoUrl]); - const insets = useSafeAreaInsets(); - return ( {} @@ -59,7 +58,9 @@ export const PlayButton: React.FC = ({ ...props }) => { const [settings] = useSettings(); const directStream = useMemo(() => { - return !url?.includes("m3u8"); + if (!url || url.length === 0) return "Loading..."; + if (url.includes("m3u8")) return "Transcoded stream"; + return "Direct stream"; }, [url]); const item = useMemo(() => { @@ -318,10 +319,11 @@ export const PlayButton: React.FC = ({ ...props }) => { return ( diff --git a/hooks/useOrientation.ts b/hooks/useOrientation.ts index bfca1aab..1ecb31ac 100644 --- a/hooks/useOrientation.ts +++ b/hooks/useOrientation.ts @@ -24,5 +24,5 @@ export const useOrientation = () => { }; }, []); - return { orientation }; + return { orientation, setOrientation }; }; diff --git a/providers/PlaySettingsProvider.tsx b/providers/PlaySettingsProvider.tsx index 6b938774..027a442b 100644 --- a/providers/PlaySettingsProvider.tsx +++ b/providers/PlaySettingsProvider.tsx @@ -105,9 +105,11 @@ export const PlaySettingsProvider: React.FC<{ children: React.ReactNode }> = ({ audioStreamIndex: newSettings?.audioIndex ?? 0, subtitleStreamIndex: newSettings?.subtitleIndex ?? -1, userId: user.Id, - forceDirectPlay: settings.forceDirectPlay, }); + console.log("getStreamUrl ~"); + console.log(`${data?.url?.slice(0, 100)}...${data?.url?.slice(-50)}`); + _setPlaySettings(newSettings); setPlayUrl(data?.url!); setPlaySessionId(data?.sessionId!);