diff --git a/mobile/lib/services/magic_cache_service.dart b/mobile/lib/services/magic_cache_service.dart index f97fbcb37b..462cb851fd 100644 --- a/mobile/lib/services/magic_cache_service.dart +++ b/mobile/lib/services/magic_cache_service.dart @@ -305,15 +305,22 @@ class MagicCacheService { _logger.info("No magic cache found"); return []; } - final jsonString = file.readAsStringSync(); - return MagicCache.decodeJsonToList(jsonString); + try { + final bytes = await file.readAsBytes(); + final jsonString = String.fromCharCodes(bytes); + return MagicCache.decodeJsonToList(jsonString); + } catch (e, s) { + _logger.severe("Error reading or decoding cache file", e, s); + await file.delete(); + rethrow; + } } Future clearMagicCache() async { final file = File(await _getCachePath()); - if (file.existsSync()) { - await file.delete(); - } + if (file.existsSync()) { + await file.delete(); + } } Future> getMagicGenericSearchResult( diff --git a/mobile/lib/services/memories_cache_service.dart b/mobile/lib/services/memories_cache_service.dart index a7a01de641..0c5aab6c8b 100644 --- a/mobile/lib/services/memories_cache_service.dart +++ b/mobile/lib/services/memories_cache_service.dart @@ -428,15 +428,25 @@ class MemoriesCacheService { allFileIdsToFile[file.uploadedFileID!] = file; } } - final jsonString = file.readAsStringSync(); - return MemoriesCache.decodeFromJsonString(jsonString, allFileIdsToFile); + try { + final bytes = await file.readAsBytes(); + final jsonString = String.fromCharCodes(bytes); + final cache = + MemoriesCache.decodeFromJsonString(jsonString, allFileIdsToFile); + _logger.info("Reading memories cache result from disk done"); + return cache; + } catch (e, s) { + _logger.severe("Error reading or decoding cache file", e, s); + await file.delete(); + return null; + } } Future clearMemoriesCache() async { final file = File(await _getCachePath()); - if (file.existsSync()) { - await file.delete(); - } + if (file.existsSync()) { + await file.delete(); + } _cachedMemories = null; } }