Fix for the selecting the same bitrate when changing the same episode in the player

This commit is contained in:
Alex Kim
2024-12-10 20:48:15 +11:00
parent 319e1fd53f
commit 6459e5f323
2 changed files with 22 additions and 15 deletions

View File

@@ -24,7 +24,7 @@ import {
MediaSourceInfo,
} from "@jellyfin/sdk/lib/generated-client";
import { Image } from "expo-image";
import { useRouter } from "expo-router";
import { useLocalSearchParams, useRouter } from "expo-router";
import { useCallback, useEffect, useRef, useState } from "react";
import { Dimensions, Pressable, TouchableOpacity, View } from "react-native";
import { Slider } from "react-native-awesome-slider";
@@ -128,6 +128,10 @@ export const Controls: React.FC<Props> = ({
const wasPlayingRef = useRef(false);
const lastProgressRef = useRef<number>(0);
const { bitrateValue } = useLocalSearchParams<{
bitrateValue: string;
}>();
const { showSkipButton, skipIntro } = useIntroSkipper(
offline ? undefined : item.Id,
currentTime,
@@ -149,18 +153,20 @@ export const Controls: React.FC<Props> = ({
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
const { bitrate, mediaSource, audioIndex, subtitleIndex } =
getDefaultPlaySettings(previousItem, settings);
const { mediaSource, audioIndex, subtitleIndex } = getDefaultPlaySettings(
previousItem,
settings
);
const queryParams = new URLSearchParams({
itemId: previousItem.Id ?? "", // Ensure itemId is a string
audioIndex: audioIndex?.toString() ?? "",
subtitleIndex: subtitleIndex?.toString() ?? "",
mediaSourceId: mediaSource?.Id ?? "", // Ensure mediaSourceId is a string
bitrateValue: bitrate.toString(),
bitrateValue: bitrateValue.toString(),
}).toString();
if (!bitrate.value) {
if (!bitrateValue) {
// @ts-expect-error
router.replace(`player/direct-player?${queryParams}`);
return;
@@ -174,18 +180,20 @@ export const Controls: React.FC<Props> = ({
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
const { bitrate, mediaSource, audioIndex, subtitleIndex } =
getDefaultPlaySettings(nextItem, settings);
const { mediaSource, audioIndex, subtitleIndex } = getDefaultPlaySettings(
nextItem,
settings
);
const queryParams = new URLSearchParams({
itemId: nextItem.Id ?? "", // Ensure itemId is a string
audioIndex: audioIndex?.toString() ?? "",
subtitleIndex: subtitleIndex?.toString() ?? "",
mediaSourceId: mediaSource?.Id ?? "", // Ensure mediaSourceId is a string
bitrateValue: bitrate.toString(),
bitrateValue: bitrateValue.toString(),
}).toString();
if (!bitrate.value) {
if (!bitrateValue) {
// @ts-expect-error
router.replace(`player/direct-player?${queryParams}`);
return;

View File

@@ -25,7 +25,6 @@ import {
SeasonDropdown,
SeasonIndexState,
} from "@/components/series/SeasonDropdown";
import { Item } from "zeego/dropdown-menu";
type Props = {
item: BaseItemDto;
@@ -155,10 +154,7 @@ export const EpisodeList: React.FC<Props> = ({ item, close }) => {
}
}, [episodes, item.Id]);
const { audioIndex, subtitleIndex, bitrateValue } = useLocalSearchParams<{
audioIndex: string;
subtitleIndex: string;
mediaSourceId: string;
const { bitrateValue } = useLocalSearchParams<{
bitrateValue: string;
}>();
@@ -166,7 +162,10 @@ export const EpisodeList: React.FC<Props> = ({ item, close }) => {
const item = await getItemById(api, itemId);
if (!settings || !item) return;
const { mediaSource } = getDefaultPlaySettings(item, settings);
const { mediaSource, audioIndex, subtitleIndex } = getDefaultPlaySettings(
item,
settings
);
const queryParams = new URLSearchParams({
itemId: item.Id ?? "", // Ensure itemId is a string