restoreQuery<T> method

Query<T> restoreQuery<T>(
  1. QueryKey<T> key,
  2. QueryState<T> state, {
  3. Map<String, Object?> meta = const <String, Object?>{},
})

Restores a query before its executable QueryOptions are registered.

Implementation

Query<T> restoreQuery<T>(
  QueryKey<T> key,
  QueryState<T> state, {
  Map<String, Object?> meta = const <String, Object?>{},
}) {
  _requireKeyType<T>(key);
  final existing = queryCache.getAny(key.canonical);
  if (existing != null) {
    if (existing.dataType != T) {
      throw _queryTypeConflict(key, existing.dataType, T);
    }
    return existing as Query<T>;
  }
  final policy = getQueryDefaults(key);
  final networkMode = policy.networkMode ?? QueryNetworkMode.online;
  final restored = Query<T>(
    client: this,
    cache: queryCache,
    state: state,
    options: ResolvedQueryOptions<T>(
      key: key,
      query: null,
      freshness:
          policy.freshness ?? const QueryFreshness.staleAfter(Duration.zero),
      gcTime: policy.gcTime ?? const Duration(minutes: 5),
      retry:
          policy.retry ??
          QueryRetry.times(options.environment.isServer ? 0 : 3),
      retryDelay: policy.retryDelay ?? defaultQueryRetryDelay,
      networkMode: networkMode,
      refetchOnMount: policy.refetchOnMount ?? QueryRefetchPolicy.stale,
      refetchOnFocus: policy.refetchOnFocus ?? QueryRefetchPolicy.stale,
      refetchOnReconnect:
          policy.refetchOnReconnect ?? QueryRefetchPolicy.stale,
      refetchInterval: policy.refetchInterval,
      refetchInBackground: policy.refetchInBackground ?? false,
      enabled: policy.enabled ?? true,
      structuralSharing: policy.structuralSharing ?? true,
      initialData: null,
      meta: Map<String, Object?>.unmodifiable(meta),
      merge: null,
    ),
  );
  queryCache.add(restored);
  return restored;
}