From 44e5436c3b431a115c2c4679163aa2501e000be8 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Mon, 25 Nov 2024 16:54:49 +0100 Subject: [PATCH] fix: video not quitting when leaving player route --- app/(auth)/player/direct-player.tsx | 47 +++++++++++++++++------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/app/(auth)/player/direct-player.tsx b/app/(auth)/player/direct-player.tsx index f5577887..be5bf96c 100644 --- a/app/(auth)/player/direct-player.tsx +++ b/app/(auth)/player/direct-player.tsx @@ -30,9 +30,19 @@ import { } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; import * as Haptics from "expo-haptics"; -import { useGlobalSearchParams, useLocalSearchParams } from "expo-router"; +import { + useFocusEffect, + useGlobalSearchParams, + useLocalSearchParams, +} from "expo-router"; import { useAtomValue } from "jotai"; -import React, { useCallback, useMemo, useRef, useState } from "react"; +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; import { Alert, Pressable, View } from "react-native"; import { useSharedValue } from "react-native-reanimated"; import { SafeAreaView } from "react-native-safe-area-context"; @@ -332,19 +342,13 @@ export default function page() { : 0; }, [item]); - if (isLoadingItem || isLoadingStreamUrl) - return ( - - - - ); - - if (isErrorItem || isErrorStreamUrl) - return ( - - Error - - ); + useFocusEffect( + React.useCallback(() => { + return () => { + videoRef.current?.stop(); + }; + }, []) + ); // Preselection of audio and subtitle tracks. @@ -389,12 +393,17 @@ export default function page() { } } - if (!item || !stream) + if (!item || isLoadingItem || isLoadingStreamUrl || !stream) return ( - - - + + + ); + + if (isErrorItem || isErrorStreamUrl) + return ( + + Error );