Fix some formatting

This commit is contained in:
Alex Kim
2026-02-19 18:39:00 +11:00
parent af50b023ef
commit 24cb679c0b
3 changed files with 59 additions and 60 deletions

View File

@@ -96,14 +96,23 @@ export const PlayButton: React.FC<Props> = ({
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<Props> = ({
t,
]);
const buildOfflineQueryParams = useCallback(
(downloadedItem: NonNullable<ReturnType<typeof getDownloadedItemById>>) => {
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<Props> = ({
// 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<Props> = ({
<Button
onPress={() => {
hideModal();
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(),
);
}}
color='purple'
>
@@ -391,23 +396,7 @@ export const PlayButton: React.FC<Props> = ({
{
text: t("player.downloaded_file_yes"),
onPress: () => {
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());
},
isPreferred: true,
},

View File

@@ -20,13 +20,23 @@ export const useDownloadedFileOpener = () => {
const queryParams = new URLSearchParams({
itemId: item.Id,
offline: "true",
audioIndex:
downloadedItem?.userData?.audioStreamIndex?.toString() ?? "",
subtitleIndex:
downloadedItem?.userData?.subtitleStreamIndex?.toString() ?? "-1",
playbackPosition:
item.UserData?.PlaybackPositionTicks?.toString() ?? "0",
});
if (downloadedItem?.userData?.audioStreamIndex !== undefined) {
queryParams.set(
"audioIndex",
downloadedItem.userData.audioStreamIndex.toString(),
);
}
if (downloadedItem?.userData?.subtitleStreamIndex !== undefined) {
queryParams.set(
"subtitleIndex",
downloadedItem.userData.subtitleStreamIndex.toString(),
);
}
try {
router.push(`/player/direct-player?${queryParams.toString()}`);
} catch (error) {

View File

@@ -193,12 +193,12 @@ export const usePlaybackManager = ({
? localItem.userData
: {
...localItem.userData,
...(playbackProgressInfo.AudioStreamIndex != null && {
audioStreamIndex: playbackProgressInfo.AudioStreamIndex,
}),
...(playbackProgressInfo.SubtitleStreamIndex != null && {
subtitleStreamIndex: playbackProgressInfo.SubtitleStreamIndex,
}),
audioStreamIndex:
playbackProgressInfo.AudioStreamIndex ??
localItem.userData.audioStreamIndex,
subtitleStreamIndex:
playbackProgressInfo.SubtitleStreamIndex ??
localItem.userData.subtitleStreamIndex,
},
});
// Force invalidate queries so they refetch from updated local database