From 4753b2a57a2eb5ebff2fdd92b0206678d2a3c96f Mon Sep 17 00:00:00 2001 From: AdityasahuX07 Date: Tue, 23 Dec 2025 15:22:01 +0530 Subject: [PATCH] Update EpisodeStreamsModal.tsx --- .../player/modals/EpisodeStreamsModal.tsx | 302 ++++++------------ 1 file changed, 100 insertions(+), 202 deletions(-) diff --git a/src/components/player/modals/EpisodeStreamsModal.tsx b/src/components/player/modals/EpisodeStreamsModal.tsx index e41722b1..55f3c0d8 100644 --- a/src/components/player/modals/EpisodeStreamsModal.tsx +++ b/src/components/player/modals/EpisodeStreamsModal.tsx @@ -31,34 +31,22 @@ const QualityBadge = ({ quality }: { quality: string | null }) => { color = '#F59E0B'; label = '4K'; } else if (qualityNum >= 1080) { - color = '#EF4444'; - label = 'FHD'; + color = '#3B82F6'; + label = '1080p'; } else if (qualityNum >= 720) { color = '#10B981'; - label = 'HD'; + label = '720p'; } return ( - - - {label} - + + {label} ); }; @@ -114,7 +102,6 @@ export const EpisodeStreamsModal: React.FC = ({ respondedProviders.add(addonId); if (error) { - logger.warn(`[EpisodeStreamsModal] Error from ${addonName || addonId}:`, error); setHasErrors(prev => [...prev, `${addonName || addonId}: ${error.message || 'Unknown error'}`]); } else if (streams && streams.length > 0) { setAvailableStreams(prev => ({ @@ -124,29 +111,20 @@ export const EpisodeStreamsModal: React.FC = ({ addonName: addonName || addonId } })); - logger.log(`[EpisodeStreamsModal] Added ${streams.length} streams from ${addonName || addonId}`); - } else { - logger.log(`[EpisodeStreamsModal] No streams from ${addonName || addonId}`); } if (completedProviders >= expectedProviders.size) { - logger.log(`[EpisodeStreamsModal] All providers completed. Total providers responded: ${respondedProviders.size}`); setIsLoading(false); } }); - // Fallback timeout setTimeout(() => { if (respondedProviders.size === 0) { - logger.warn(`[EpisodeStreamsModal] Timeout: No providers responded`); - setHasErrors(prev => [...prev, 'Timeout: No providers responded']); setIsLoading(false); } }, 8000); } catch (error) { - logger.error('[EpisodeStreamsModal] Error fetching streams:', error); - setHasErrors(prev => [...prev, `Failed to fetch streams: ${error}`]); setIsLoading(false); } }; @@ -162,9 +140,18 @@ export const EpisodeStreamsModal: React.FC = ({ const sortedProviders = Object.entries(availableStreams); return ( - - - + + {/* Backdrop */} + + = ({ borderColor: 'rgba(255,255,255,0.1)', }} > - - - - - {episode?.name || 'Select Stream'} + {/* Header */} + + + + + {episode?.name || 'Sources'} {episode && ( - - S{episode.season_number}E{episode.episode_number} + + S{episode.season_number} • E{episode.episode_number} )} @@ -198,176 +190,82 @@ export const EpisodeStreamsModal: React.FC = ({ - {isLoading && ( - - - - Finding available streams... - + {isLoading && sortedProviders.length === 0 && ( + + + Finding sources... )} - {!isLoading && sortedProviders.length > 0 && ( - sortedProviders.map(([providerId, providerData]) => ( - - - {providerData.addonName} ({providerData.streams.length}) - - - - {providerData.streams.map((stream, index) => { - const quality = getQualityFromTitle(stream.title) || stream.quality; - - return ( - onSelectStream(stream)} - activeOpacity={0.7} - > - - - - - {stream.title || stream.name || `Stream ${index + 1}`} - - {quality && } - - - {(stream.size || stream.lang) && ( - - {stream.size && ( - - - - {(stream.size / (1024 * 1024 * 1024)).toFixed(1)} GB - - - )} - {stream.lang && ( - - - - {stream.lang.toUpperCase()} - - - )} - - )} - - - - - - - - ); - })} - - - )) - )} - - {!isLoading && sortedProviders.length === 0 && hasErrors.length === 0 && ( - - - - No sources available - + {sortedProviders.map(([providerId, providerData]) => ( + - Try searching for different content + {providerData.addonName} + + + {providerData.streams.map((stream, index) => { + const quality = getQualityFromTitle(stream.title) || stream.quality; + + return ( + { + onSelectStream(stream); + onClose(); + }} + activeOpacity={0.7} + > + + + + + {stream.name || 'Unknown Source'} + + + + {stream.title && ( + + {stream.title} + + )} + + + + ); + })} + + + ))} + + {!isLoading && sortedProviders.length === 0 && ( + + + No sources found )} - {!isLoading && hasErrors.length > 0 && ( - - - - - Errors occurred - - - {hasErrors.map((error, index) => ( - - {error} - - ))} - + {hasErrors.length > 0 && ( + + Sources might be limited due to provider errors. + )}