readCache<T, U extends JsonSerializable> method

Future<T?> readCache<T, U extends JsonSerializable>(
  1. GraphQLQuery<T, U> query
)

Reads cached data for a query without making a network request.

Returns null if:

  • The query is not cached
  • The cached entry has expired

Example:

final cachedUser = await client.readCache(
  GetUserQuery(variables: GetUserArguments(id: '123')),
);
if (cachedUser != null) {
  print('Found in cache: $cachedUser');
}

Implementation

Future<T?> readCache<T, U extends JsonSerializable>(
  GraphQLQuery<T, U> query,
) async {
  final request = Request(
    operation: Operation(
      document: query.document,
      operationName: query.operationName,
    ),
    variables: query.getVariablesMap(),
  );

  final cacheKey = _cacheLink.generateCacheKey(request);
  final cached = _cacheLink.read(cacheKey);

  return cached != null ? query.parse(cached.data) : null;
}