This commit is contained in:
tapframe 2025-09-26 22:52:25 +05:30
parent 198828af16
commit 09256f89e5
2 changed files with 17 additions and 8 deletions

View file

@ -72,6 +72,10 @@
4C4B16751559433B951A993C /* noop-file.swift */,
05FDEBFD08F44643A98FC770 /* Nuvio-Bridging-Header.h */,
8F20890D58E6A611113A359A /* PrivacyInfo.xcprivacy */,
9FBA88F02E86ECD700892850 /* KSPlayerManager.m */,
9FBA88F12E86ECD700892850 /* KSPlayerModule.swift */,
9FBA88F22E86ECD700892850 /* KSPlayerView.swift */,
9FBA88F32E86ECD700892850 /* KSPlayerViewManager.swift */,
);
name = Nuvio;
sourceTree = "<group>";
@ -95,10 +99,6 @@
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
9FBA88F02E86ECD700892850 /* KSPlayerManager.m */,
9FBA88F12E86ECD700892850 /* KSPlayerModule.swift */,
9FBA88F22E86ECD700892850 /* KSPlayerView.swift */,
9FBA88F32E86ECD700892850 /* KSPlayerViewManager.swift */,
13B07FAE1A68108700A75B9A /* Nuvio */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
83CBBA001A601CBA00E9B192 /* Products */,

View file

@ -466,6 +466,11 @@ export const StreamsScreen = () => {
if (__DEV__) console.log('[StreamsScreen] Received thumbnail from params:', episodeThumbnail);
}, [episodeThumbnail]);
// Reset movie logo error when movie changes
useEffect(() => {
setMovieLogoError(false);
}, [id]);
// Pause trailer when StreamsScreen is opened
useEffect(() => {
// Pause trailer when component mounts
@ -533,6 +538,9 @@ export const StreamsScreen = () => {
// Add state for no sources error
const [showNoSourcesError, setShowNoSourcesError] = useState(false);
// State for movie logo loading error
const [movieLogoError, setMovieLogoError] = useState(false);
// Scraper logos map to avoid per-card async fetches
const [scraperLogos, setScraperLogos] = useState<Record<string, string>>({});
// Preload scraper logos once and expose via state
@ -1662,11 +1670,12 @@ export const StreamsScreen = () => {
{type === 'movie' && metadata && (
<View style={[styles.movieTitleContainer]}>
<View style={styles.movieTitleContent}>
{metadata.logo ? (
<AnimatedImage
{metadata.logo && !movieLogoError ? (
<Image
source={{ uri: metadata.logo }}
style={styles.movieLogo}
contentFit="contain"
onError={() => setMovieLogoError(true)}
/>
) : (
<AnimatedText style={styles.movieTitle} numberOfLines={2}>
@ -2320,13 +2329,13 @@ const createStyles = (colors: any) => StyleSheet.create({
},
movieTitleContent: {
width: '100%',
height: '100%',
height: 80, // Fixed height for consistent layout
alignItems: 'center',
justifyContent: 'center',
},
movieLogo: {
width: '100%',
height: '100%',
height: 80, // Fixed height to match content container
maxWidth: width * 0.85,
},
movieTitle: {