hydrate method

void hydrate(
  1. Map<String, dynamic> dehydratedState, {
  2. dynamic deserialize(
    1. dynamic data,
    2. List key
    )?,
})

Restores entries into this scope only.

Implementation

void hydrate(
  Map<String, dynamic> dehydratedState, {
  dynamic Function(dynamic json, List<dynamic> key)? deserialize,
}) {
  _assertAlive();
  final queriesRaw = dehydratedState['queries'];
  if (queriesRaw is! List) return;

  for (final item in queriesRaw) {
    if (item is! Map) continue;
    final itemMap = Map<String, dynamic>.from(item);
    final key = itemMap['key'] as List<dynamic>?;
    if (key == null) continue;

    final rawData = itemMap['data'];
    final data = deserialize != null ? deserialize(rawData, key) : rawData;

    final updatedAtStr = itemMap['updatedAt'] as String?;
    final updatedAt = updatedAtStr != null
        ? DateTime.tryParse(updatedAtStr) ?? DateTime.now()
        : DateTime.now();

    final staleTimeMs = itemMap['staleTimeMs'] as int? ??
        itemMap['staleTime'] as int? ??
        300000;
    final cacheTimeMs = itemMap['cacheTimeMs'] as int? ??
        itemMap['cacheTime'] as int? ??
        1800000;
    final isStale = itemMap['isStale'] as bool? ?? false;

    final entry = QueryCacheEntry<dynamic>(
      key: key,
      data: data,
      updatedAt: updatedAt,
      staleTime: Duration(milliseconds: staleTimeMs),
      cacheTime: Duration(milliseconds: cacheTimeMs),
      isStale: isStale,
    );

    putEntry(entry);
  }
}