diff --git a/lib/screens/media_detail_screen.dart b/lib/screens/media_detail_screen.dart index 9a6e9076..24fef70c 100644 --- a/lib/screens/media_detail_screen.dart +++ b/lib/screens/media_detail_screen.dart @@ -21,6 +21,7 @@ import '../i18n/strings.g.dart'; import '../widgets/plex_optimized_image.dart'; import '../utils/plex_image_helper.dart'; import '../../services/plex_client.dart'; +import '../services/plex_api_cache.dart'; import '../models/plex_metadata.dart'; import '../utils/content_utils.dart'; import '../utils/rating_utils.dart'; @@ -768,10 +769,14 @@ class _MediaDetailScreenState extends State with WatchStateAw _isLoadingMetadata = true; }); - // Offline mode: use passed metadata directly, load seasons from downloads + // Offline mode: try to load full metadata from cache (has clearLogo, summary, etc.) if (widget.isOffline) { + final cachedMetadata = await PlexApiCache.instance.getMetadata( + widget.metadata.serverId ?? '', + widget.metadata.ratingKey, + ); setState(() { - _fullMetadata = widget.metadata; + _fullMetadata = cachedMetadata ?? widget.metadata; _isLoadingMetadata = false; }); diff --git a/lib/services/plex_api_cache.dart b/lib/services/plex_api_cache.dart index b3799966..c581b4a6 100644 --- a/lib/services/plex_api_cache.dart +++ b/lib/services/plex_api_cache.dart @@ -119,7 +119,7 @@ class PlexApiCache { final cached = await get(serverId, '/library/metadata/$ratingKey'); final json = PlexCacheParser.extractFirstMetadata(cached); if (json == null) return null; - return PlexMetadata.fromJson(json).copyWith(serverId: serverId); + return PlexMetadata.fromJsonWithImages(json).copyWith(serverId: serverId); } /// Clear all cached data (useful for debugging/testing)