mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
push
This commit is contained in:
parent
198828af16
commit
09256f89e5
2 changed files with 17 additions and 8 deletions
|
|
@ -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 */,
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue