From bafba0b151aeeee7b1e6a2e1a1f7b3c939ebabf9 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Fri, 20 Mar 2026 08:29:36 +0100 Subject: [PATCH] fix: guard cache put against non-Map response data --- lib/services/plex_client.dart | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/services/plex_client.dart b/lib/services/plex_client.dart index f79f15b4..387091bf 100644 --- a/lib/services/plex_client.dart +++ b/lib/services/plex_client.dart @@ -735,9 +735,7 @@ class PlexClient { } try { final response = await networkCall(); - if (cacheResponse && response.data != null) { - await _cache.put(serverId, cacheKey, response.data); - } + if (cacheResponse) await _cacheResponseData(cacheKey, response.data); return parseResponse(response); } catch (e) { // On forceRefresh, still try cache as last resort on network error @@ -763,12 +761,18 @@ class PlexClient { if (cached != null) return parseCache(cached); if (_offlineMode) return null; final response = await networkCall(); - if (cacheResponse && response.data != null) { - await _cache.put(serverId, cacheKey, response.data); - } + if (cacheResponse) await _cacheResponseData(cacheKey, response.data); return parseResponse(response); } + Future _cacheResponseData(String cacheKey, dynamic data) async { + if (data is Map) { + await _cache.put(serverId, cacheKey, data); + } else if (data != null) { + appLogger.w('Unexpected response type for $cacheKey: ${data.runtimeType}'); + } + } + /// Get first metadata JSON from response data Map? _getFirstMetadataJsonFromData(Map? data) => PlexCacheParser.extractFirstMetadata(data);