QueryCache constructor

QueryCache({
  1. required Duration cacheDuration,
})

Implementation

QueryCache({
  required this.cacheDuration,
})  : _queries = Set<Query>(),
      _infiniteQueries = Set<InfiniteQuery>(),
      _mutations = Set<Mutation>(),
      _eventController = StreamController<QueryCacheEvent>.broadcast() {
  // Invalidate inactive queries and mutations every [cacheDuration]
  Timer.periodic(cacheDuration, (timer) {
    _queries.removeWhere((query) {
      if (query.isInactive) {
        _eventController.add(
          QueryCacheEvent(QueryCacheEventType.removeQuery, query),
        );
      }
      return query.isInactive;
    });
    _infiniteQueries.removeWhere((query) {
      if (query.isInactive) {
        _eventController.add(
          QueryCacheEvent(QueryCacheEventType.removeInfiniteQuery, query),
        );
      }
      return query.isInactive;
    });
    _mutations.removeWhere((mutation) {
      if (mutation.isInactive) {
        _eventController.add(
          QueryCacheEvent(QueryCacheEventType.removeMutation, mutation),
        );
      }
      return mutation.isInactive;
    });
  });
}