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
);