From 24cb679c0b0e559408f76f641ba4bcf467ee4be7 Mon Sep 17 00:00:00 2001 From: Alex Kim Date: Thu, 19 Feb 2026 18:39:00 +1100 Subject: [PATCH] Fix some formatting --- components/PlayButton.tsx | 89 ++++++++++++++------------------ hooks/useDownloadedFileOpener.ts | 18 +++++-- hooks/usePlaybackManager.ts | 12 ++--- 3 files changed, 59 insertions(+), 60 deletions(-) diff --git a/components/PlayButton.tsx b/components/PlayButton.tsx index 7afb102b..8b849a54 100644 --- a/components/PlayButton.tsx +++ b/components/PlayButton.tsx @@ -96,14 +96,23 @@ export const PlayButton: React.FC = ({ const queryParams = new URLSearchParams({ itemId: item.Id!, - audioIndex: selectedOptions.audioIndex?.toString() ?? "", - subtitleIndex: selectedOptions.subtitleIndex?.toString() ?? "", mediaSourceId: selectedOptions.mediaSource?.Id ?? "", bitrateValue: selectedOptions.bitrate?.value?.toString() ?? "", playbackPosition: item.UserData?.PlaybackPositionTicks?.toString() ?? "0", offline: isOffline ? "true" : "false", }); + if (selectedOptions.audioIndex !== undefined) { + queryParams.set("audioIndex", selectedOptions.audioIndex.toString()); + } + + if (selectedOptions.subtitleIndex !== undefined) { + queryParams.set( + "subtitleIndex", + selectedOptions.subtitleIndex.toString(), + ); + } + const queryString = queryParams.toString(); if (!client) { @@ -292,6 +301,29 @@ export const PlayButton: React.FC = ({ t, ]); + const buildOfflineQueryParams = useCallback( + (downloadedItem: NonNullable>) => { + const isTranscoded = downloadedItem.userData?.isTranscoded === true; + const audioIdx = isTranscoded + ? downloadedItem.userData?.audioStreamIndex + : selectedOptions.audioIndex; + const subtitleIdx = isTranscoded + ? downloadedItem.userData?.subtitleStreamIndex + : selectedOptions.subtitleIndex; + const params = new URLSearchParams({ + itemId: item.Id!, + offline: "true", + playbackPosition: + item.UserData?.PlaybackPositionTicks?.toString() ?? "0", + }); + if (audioIdx !== undefined) params.set("audioIndex", audioIdx.toString()); + if (subtitleIdx !== undefined) + params.set("subtitleIndex", subtitleIdx.toString()); + return params; + }, + [item, selectedOptions], + ); + const onPress = useCallback(async () => { if (!item) return; @@ -302,20 +334,7 @@ export const PlayButton: React.FC = ({ // If already in offline mode, play downloaded file directly if (isOffline && downloadedItem) { - const isTranscoded = downloadedItem.userData?.isTranscoded === true; - const queryParams = new URLSearchParams({ - itemId: item.Id!, - offline: "true", - audioIndex: isTranscoded - ? (downloadedItem.userData?.audioStreamIndex?.toString() ?? "") - : (selectedOptions.audioIndex?.toString() ?? ""), - subtitleIndex: isTranscoded - ? (downloadedItem.userData?.subtitleStreamIndex?.toString() ?? "-1") - : (selectedOptions.subtitleIndex?.toString() ?? "-1"), - playbackPosition: - item.UserData?.PlaybackPositionTicks?.toString() ?? "0", - }); - goToPlayer(queryParams.toString()); + goToPlayer(buildOfflineQueryParams(downloadedItem).toString()); return; } @@ -338,23 +357,9 @@ export const PlayButton: React.FC = ({