readNetworkCache method

Future readNetworkCache({
  1. required String path,
  2. required Map<String, dynamic> params,
  3. List<String>? ignoreKeys,
  4. int? cacheInvalidationTime,
})

Implementation

Future<dynamic> readNetworkCache({
  required String path,
  required Map<String, dynamic> params,
  List<String>? ignoreKeys,
  int? cacheInvalidationTime,
}) async {
  final cacheKey =
      NetUtils.getCacheKeyFromPath(path, params, ignoreKeys ?? []);
  final cached = await _database?.get<String>(cacheKey);
  if (cached == null) {
    return null;
  }

  final cacheData = jsonDecode(cached);
  final timestamp = cacheData['timestamp'] as int;
  final now = DateTime.now().millisecondsSinceEpoch;
  final ttl = cacheInvalidationTime ?? _cacheInvalidationTime;

  if (ttl > 0 && (now - timestamp) > ttl) {
    // 缓存已过期,删除该条目
    await remove(cacheKey);
    return null;
  }

  await _updateMetadataOnAccess(cacheKey);
  return cacheData['data'];
}