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({ const queryParams = new URLSearchParams({
itemId: item.Id!, itemId: item.Id!,
audioIndex: selectedOptions.audioIndex?.toString() ?? "",
subtitleIndex: selectedOptions.subtitleIndex?.toString() ?? "",
mediaSourceId: selectedOptions.mediaSource?.Id ?? "", mediaSourceId: selectedOptions.mediaSource?.Id ?? "",
bitrateValue: selectedOptions.bitrate?.value?.toString() ?? "", bitrateValue: selectedOptions.bitrate?.value?.toString() ?? "",
playbackPosition: item.UserData?.PlaybackPositionTicks?.toString() ?? "0", playbackPosition: item.UserData?.PlaybackPositionTicks?.toString() ?? "0",
offline: isOffline ? "true" : "false", 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(); const queryString = queryParams.toString();
if (!client) { if (!client) {
@@ -292,6 +301,29 @@ export const PlayButton: React.FC<Props> = ({
t, 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 () => { const onPress = useCallback(async () => {
if (!item) return; if (!item) return;
@@ -302,20 +334,7 @@ export const PlayButton: React.FC<Props> = ({
// If already in offline mode, play downloaded file directly // If already in offline mode, play downloaded file directly
if (isOffline && downloadedItem) { if (isOffline && downloadedItem) {
const isTranscoded = downloadedItem.userData?.isTranscoded === true; goToPlayer(buildOfflineQueryParams(downloadedItem).toString());
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());
return; return;
} }
@@ -338,23 +357,9 @@ export const PlayButton: React.FC<Props> = ({
<Button <Button
onPress={() => { onPress={() => {
hideModal(); hideModal();
const isTranscoded = goToPlayer(
downloadedItem.userData?.isTranscoded === true; buildOfflineQueryParams(downloadedItem).toString(),
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());
}} }}
color='purple' color='purple'
> >
@@ -391,23 +396,7 @@ export const PlayButton: React.FC<Props> = ({
{ {
text: t("player.downloaded_file_yes"), text: t("player.downloaded_file_yes"),
onPress: () => { onPress: () => {
const isTranscoded = goToPlayer(buildOfflineQueryParams(downloadedItem).toString());
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());
}, },
isPreferred: true, isPreferred: true,
}, },

View File

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

View File

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