fix(cast): fix empty source on rejoin

This commit is contained in:
2026-08-15 13:38:45 +02:00
parent 709264ec1c
commit a9b7663f9a
3 changed files with 12 additions and 2 deletions
@@ -466,6 +466,8 @@ class OmniPlayer(
player.addListener(object : Player.Listener {
override fun onMediaItemTransition(item: MediaItem?, reason: Int) = followMedia(item)
})
// check for cast rejoin
followMedia(player.currentMediaItem)
}
}
+4
View File
@@ -79,6 +79,7 @@ function PlayerExample({
const volume = usePlayerState("volume");
const isAutoQuality = usePlayerState("isAutoQuality");
const castStatus = usePlayerState("castStatus");
const source = usePlayerState("source");
const [logs, setLogs] = useState<{ id: number; message: string }[]>([]);
const logId = useRef(0);
const tracks = {
@@ -281,6 +282,9 @@ function PlayerExample({
<Text style={styles.statText}>
Volume: {(volume * 100).toFixed(0)}%
</Text>
<Text style={styles.statText}>
Source: {source?.metadata?.title ?? "(none)"}
</Text>
</View>
<View style={styles.selectorCard}>
+6 -2
View File
@@ -4,6 +4,7 @@ import {
useContext,
useEffect,
useEffectEvent,
useRef,
useState,
} from "react";
import { NitroModules } from "react-native-nitro-modules";
@@ -47,10 +48,13 @@ export const OmniProvider = ({
return () => player.abandon();
}, [player]);
const inited = useRef<NativeOmniPlayer | null>(null);
useEffect(() => {
if (!player) return;
// early return on init to keep running cast sessions active
if (source == null && player.source == null) return;
if (inited.current !== player) {
inited.current = player;
if (source == null) return;
}
player.source = source;
}, [player, source]);