invalidateQueries method

void invalidateQueries([
  1. dynamic filterOrPredicate
])

Invalidate queries matching filterOrPredicate (mark as stale and refetch if active).

Can be called with:

  • ZenQueryFilter: Invalidates all queries matching the filter criteria.
  • bool Function(String key): Invalidates queries whose key matches the predicate.
  • bool Function(ZenQuery query): Invalidates queries matching the query predicate.
  • null or no arguments: Invalidates ALL active queries in the cache.

Implementation

void invalidateQueries([dynamic filterOrPredicate]) {
  if (filterOrPredicate == null) {
    int count = 0;
    for (final query in _queries.values) {
      if (!query.isDisposed) {
        query.invalidate();
        count++;
      }
    }
    ZenLogger.logDebug('Invalidated all $count active queries');
  } else if (filterOrPredicate is ZenQueryFilter) {
    final matching = getQueries(filterOrPredicate);
    for (final query in matching) {
      query.invalidate();
    }
    ZenLogger.logDebug(
        'Invalidated ${matching.length} queries matching filter');
  } else if (filterOrPredicate is bool Function(String key)) {
    for (final key in _queries.keys) {
      if (filterOrPredicate(key)) {
        invalidateQuery(key);
      }
    }
  } else if (filterOrPredicate is bool Function(ZenQuery query)) {
    for (final query in _queries.values) {
      if (!query.isDisposed && filterOrPredicate(query)) {
        query.invalidate();
      }
    }
  }
}