getCacheInfo static method

Future<CacheInfo> getCacheInfo()

Returns information about the cache

Implementation

static Future<CacheInfo> getCacheInfo() async {
  await init();

  final keys = _prefs!.getKeys();
  int totalItems = 0;
  int totalSize = 0;
  final List<CacheItemInfo> items = [];

  for (final key in keys) {
    if (key.startsWith(_cachePrefix)) {
      final cacheKey = key.substring(_cachePrefix.length);
      final jsonString = _prefs!.getString(key);

      if (jsonString != null) {
        try {
          final cacheData = jsonDecode(jsonString) as Map<String, dynamic>;
          final timestamp = cacheData['timestamp'] as int;
          final duration = cacheData['duration'] as int;
          final metadata =
              cacheData['metadata'] as Map<String, dynamic>? ?? {};

          totalItems++;
          totalSize += jsonString.length;

          final now = DateTime.now().millisecondsSinceEpoch;
          final isExpired = now - timestamp > duration;

          items.add(
            CacheItemInfo(
              key: cacheKey,
              timestamp: DateTime.fromMillisecondsSinceEpoch(timestamp),
              size: jsonString.length,
              isExpired: isExpired,
              metadata: metadata,
            ),
          );
        } catch (e) {
          // Ignore corrupted cache
        }
      }
    }
  }

  return CacheInfo(
    totalItems: totalItems,
    totalSize: totalSize,
    items: items,
  );
}