diff --git a/components/video-player/controls/Controls.tsx b/components/video-player/controls/Controls.tsx index b601642f..4bad27f0 100644 --- a/components/video-player/controls/Controls.tsx +++ b/components/video-player/controls/Controls.tsx @@ -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 = ({ const wasPlayingRef = useRef(false); const lastProgressRef = useRef(0); + const { bitrateValue } = useLocalSearchParams<{ + bitrateValue: string; + }>(); + const { showSkipButton, skipIntro } = useIntroSkipper( offline ? undefined : item.Id, currentTime, @@ -149,18 +153,20 @@ export const Controls: React.FC = ({ 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 = ({ 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; diff --git a/components/video-player/controls/EpisodeList.tsx b/components/video-player/controls/EpisodeList.tsx index daff9882..11cb458a 100644 --- a/components/video-player/controls/EpisodeList.tsx +++ b/components/video-player/controls/EpisodeList.tsx @@ -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 = ({ 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 = ({ 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