fix(downloads): preserve audio track selection for offline playback

This commit is contained in:
Fredrik Burmester
2026-01-08 21:32:22 +01:00
parent 51ecde1565
commit d1387ec725
7 changed files with 146 additions and 6 deletions

View File

@@ -141,7 +141,9 @@ export default function page() {
const offline = offlineStr === "true";
const playbackManager = usePlaybackManager({ isOffline: offline });
const audioIndex = audioIndexStr
// Audio index: use URL param if provided, otherwise use stored index for offline playback
// This is computed after downloadedItem is available, see audioIndexResolved below
const audioIndexFromUrl = audioIndexStr
? Number.parseInt(audioIndexStr, 10)
: undefined;
const subtitleIndex = subtitleIndexStr
@@ -160,6 +162,17 @@ export default function page() {
isError: false,
});
// Resolve audio index: use URL param if provided, otherwise use stored index for offline playback
const audioIndex = useMemo(() => {
if (audioIndexFromUrl !== undefined) {
return audioIndexFromUrl;
}
if (offline && downloadedItem?.userData?.audioStreamIndex !== undefined) {
return downloadedItem.userData.audioStreamIndex;
}
return undefined;
}, [audioIndexFromUrl, offline, downloadedItem?.userData?.audioStreamIndex]);
// Get the playback speed for this item based on settings
const { playbackSpeed: initialPlaybackSpeed } = usePlaybackSpeed(
item,
@@ -1119,6 +1132,8 @@ export default function page() {
isVideoLoaded={isVideoLoaded}
tracksReady={tracksReady}
useVlcPlayer={useVlcPlayer}
offline={offline}
downloadedItem={downloadedItem}
>
<VideoProvider>
<View