parseCacheLruIndex function

CacheLruIndex parseCacheLruIndex(
  1. String? raw
)

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();
  }
}