From 230afd7414f84af15fc368b8e1a028b952f74bf6 Mon Sep 17 00:00:00 2001 From: tapframe Date: Thu, 9 Oct 2025 12:40:19 +0530 Subject: [PATCH] update image caching --- src/components/common/OptimizedImage.tsx | 2 +- src/components/home/ContentItem.tsx | 2 +- src/components/home/HeroCarousel.tsx | 10 +++++----- src/screens/LibraryScreen.tsx | 5 +++-- src/screens/TraktSettingsScreen.tsx | 10 ++++++++++ src/services/imageCacheService.ts | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/components/common/OptimizedImage.tsx b/src/components/common/OptimizedImage.tsx index 804b22c4..0d9756da 100644 --- a/src/components/common/OptimizedImage.tsx +++ b/src/components/common/OptimizedImage.tsx @@ -60,7 +60,7 @@ const OptimizedImage: React.FC = ({ onError, contentFit = 'cover', transition = 200, - cachePolicy = 'memory-disk' + cachePolicy = 'memory' }) => { const [isLoaded, setIsLoaded] = useState(false); const [hasError, setHasError] = useState(false); diff --git a/src/components/home/ContentItem.tsx b/src/components/home/ContentItem.tsx index 62c645a5..c82092f2 100644 --- a/src/components/home/ContentItem.tsx +++ b/src/components/home/ContentItem.tsx @@ -258,7 +258,7 @@ const ContentItem = ({ item, onPress, shouldLoadImage: shouldLoadImageProp, defe source={{ uri: optimizedPosterUrl }} style={[styles.poster, { backgroundColor: currentTheme.colors.elevation1, borderRadius: posterRadius }]} contentFit="cover" - cachePolicy={Platform.OS === 'android' ? 'disk' : 'memory-disk'} + cachePolicy="memory" transition={0} allowDownscaling priority="normal" // Normal priority for horizontal scrolling diff --git a/src/components/home/HeroCarousel.tsx b/src/components/home/HeroCarousel.tsx index 1322d85b..5370100d 100644 --- a/src/components/home/HeroCarousel.tsx +++ b/src/components/home/HeroCarousel.tsx @@ -165,7 +165,7 @@ const HeroCarousel: React.FC = ({ items, loading = false }) = style={styles.backgroundImage as ImageStyle} contentFit="cover" blurRadius={Platform.OS === 'android' ? 8 : 12} - cachePolicy="memory-disk" + cachePolicy="memory" transition={0} priority="low" /> @@ -191,7 +191,7 @@ const HeroCarousel: React.FC = ({ items, loading = false }) = source={{ uri: data[activeIndex + 1].banner || data[activeIndex + 1].poster }} style={{ width: 1, height: 1 }} contentFit="cover" - cachePolicy="memory-disk" + cachePolicy="memory" transition={0} /> )} @@ -200,7 +200,7 @@ const HeroCarousel: React.FC = ({ items, loading = false }) = source={{ uri: data[activeIndex - 1].banner || data[activeIndex - 1].poster }} style={{ width: 1, height: 1 }} contentFit="cover" - cachePolicy="memory-disk" + cachePolicy="memory" transition={0} /> )} @@ -285,7 +285,7 @@ const CarouselCard: React.FC = memo(({ item, colors, logoFail style={styles.banner as ImageStyle} contentFit="cover" transition={0} - cachePolicy="memory-disk" + cachePolicy="memory" /> = memo(({ item, colors, logoFail style={styles.logo as ImageStyle} contentFit="contain" transition={0} - cachePolicy="memory-disk" + cachePolicy="memory" onError={onLogoError} /> ) : ( diff --git a/src/screens/LibraryScreen.tsx b/src/screens/LibraryScreen.tsx index d3498b45..289efa09 100644 --- a/src/screens/LibraryScreen.tsx +++ b/src/screens/LibraryScreen.tsx @@ -403,11 +403,12 @@ const LibraryScreen = () => { > - {item.watched && ( diff --git a/src/screens/TraktSettingsScreen.tsx b/src/screens/TraktSettingsScreen.tsx index 53c55e5a..79d978fe 100644 --- a/src/screens/TraktSettingsScreen.tsx +++ b/src/screens/TraktSettingsScreen.tsx @@ -199,6 +199,8 @@ const TraktSettingsScreen: React.FC = () => { await traktService.logout(); setIsAuthenticated(false); setUserProfile(null); + // Refresh auth status in the integration hook to ensure UI consistency + await refreshAuthStatus(); } catch (error) { logger.error('[TraktSettingsScreen] Error signing out:', error); openAlert('Error', 'Failed to sign out of Trakt.'); @@ -494,6 +496,14 @@ const TraktSettingsScreen: React.FC = () => { )} + + setAlertVisible(false)} + actions={alertActions} + /> ); }; diff --git a/src/services/imageCacheService.ts b/src/services/imageCacheService.ts index 12344ee2..d9f4b6fc 100644 --- a/src/services/imageCacheService.ts +++ b/src/services/imageCacheService.ts @@ -14,7 +14,7 @@ interface CachedImage { class ImageCacheService { private cache = new Map(); - private readonly CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours + private readonly CACHE_DURATION = Infinity; // Session-only: valid until app close private readonly MAX_CACHE_SIZE = 25; // Further reduced maximum number of cached images private readonly MAX_MEMORY_MB = 40; // Further reduced maximum memory usage in MB private currentMemoryUsage = 0;