parseCacheLruIndex function
Parses sidecar JSON; corrupt or missing payloads become an empty index.
Implementation
CacheLruIndex parseCacheLruIndex(String? raw) {
if (raw == null || raw.isEmpty) {
return emptyCacheLruIndex();
}
try {
final decoded = jsonDecode(raw);
if (decoded is! Map) {
return emptyCacheLruIndex();
}
final entriesRaw = decoded['entries'];
if (entriesRaw is! Map) {
return emptyCacheLruIndex();
}
final entries = <String, CacheLruEntry>{};
entriesRaw.forEach((key, value) {
if (key is! String || value is! Map) {
return;
}
final lastAccessed = value['lastAccessed'];
if (lastAccessed is num) {
entries[key] = CacheLruEntry(lastAccessed: lastAccessed.toInt());
}
});
return CacheLruIndex(entries: entries);
} catch (_) {
return emptyCacheLruIndex();
}
}