From 89702d14f5f92aea16f0bb32d00f82b927dcc34e Mon Sep 17 00:00:00 2001 From: tapframe Date: Tue, 10 Jun 2025 02:46:54 +0530 Subject: [PATCH] Enhance VideoPlayer and PlayerControls components with streamName support This update adds the streamName prop to the VideoPlayer and PlayerControls components, allowing for better display of stream information. The AppNavigator has been modified to include streamName in the navigation parameters, and the StreamsScreen now determines the streamName based on the selected stream, improving the overall user experience by providing clearer context during playback. --- src/components/player/VideoPlayer.tsx | 4 +++- src/components/player/controls/PlayerControls.tsx | 4 +++- src/navigation/AppNavigator.tsx | 1 + src/screens/StreamsScreen.tsx | 5 +++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/player/VideoPlayer.tsx b/src/components/player/VideoPlayer.tsx index 1ad89c09b..d35fca0f0 100644 --- a/src/components/player/VideoPlayer.tsx +++ b/src/components/player/VideoPlayer.tsx @@ -44,6 +44,7 @@ const VideoPlayer: React.FC = () => { quality, year, streamProvider, + streamName, id, type, episodeId, @@ -121,7 +122,7 @@ const VideoPlayer: React.FC = () => { const [pendingSeek, setPendingSeek] = useState<{ position: number; shouldPlay: boolean } | null>(null); const [currentQuality, setCurrentQuality] = useState(quality); const [currentStreamProvider, setCurrentStreamProvider] = useState(streamProvider); - const [currentStreamName, setCurrentStreamName] = useState(undefined); + const [currentStreamName, setCurrentStreamName] = useState(streamName); const isMounted = useRef(true); const calculateVideoStyles = (videoWidth: number, videoHeight: number, screenWidth: number, screenHeight: number) => { @@ -1000,6 +1001,7 @@ const VideoPlayer: React.FC = () => { quality={currentQuality || quality} year={year} streamProvider={currentStreamProvider || streamProvider} + streamName={currentStreamName} currentTime={currentTime} duration={duration} playbackSpeed={playbackSpeed} diff --git a/src/components/player/controls/PlayerControls.tsx b/src/components/player/controls/PlayerControls.tsx index 47fe02274..4700eaafd 100644 --- a/src/components/player/controls/PlayerControls.tsx +++ b/src/components/player/controls/PlayerControls.tsx @@ -16,6 +16,7 @@ interface PlayerControlsProps { quality?: string; year?: number; streamProvider?: string; + streamName?: string; currentTime: number; duration: number; playbackSpeed: number; @@ -51,6 +52,7 @@ export const PlayerControls: React.FC = ({ quality, year, streamProvider, + streamName, currentTime, duration, playbackSpeed, @@ -142,7 +144,7 @@ export const PlayerControls: React.FC = ({ {year && {year}} {quality && {quality}} - {streamProvider && via {streamProvider}} + {streamName && via {streamName}} diff --git a/src/navigation/AppNavigator.tsx b/src/navigation/AppNavigator.tsx index dab0094f6..0892a5413 100644 --- a/src/navigation/AppNavigator.tsx +++ b/src/navigation/AppNavigator.tsx @@ -74,6 +74,7 @@ export type RootStackParamList = { quality?: string; year?: number; streamProvider?: string; + streamName?: string; id?: string; type?: string; episodeId?: string; diff --git a/src/screens/StreamsScreen.tsx b/src/screens/StreamsScreen.tsx index ea726d4ff..73990555b 100644 --- a/src/screens/StreamsScreen.tsx +++ b/src/screens/StreamsScreen.tsx @@ -522,6 +522,10 @@ export const StreamsScreen = () => { // Prepare available streams for the change source feature const streamsToPass = type === 'series' ? episodeStreams : groupedStreams; + // Determine the stream name using the same logic as StreamCard + const isHDRezka = stream.name === 'HDRezka'; + const streamName = isHDRezka ? `HDRezka ${stream.title}` : (stream.name || stream.title || 'Unnamed Stream'); + navigation.navigate('Player', { uri: stream.url, title: metadata?.name || '', @@ -531,6 +535,7 @@ export const StreamsScreen = () => { quality: stream.title?.match(/(\d+)p/)?.[1] || undefined, year: metadata?.year, streamProvider: stream.name, + streamName: streamName, id, type, episodeId: type === 'series' && selectedEpisode ? selectedEpisode : undefined,