refetchQueries method
Refetch all queries matching filterOrPredicate.
Can be called with:
- ZenQueryFilter: Refetches all queries matching the filter criteria.
bool Function(String key): Refetches queries whose key matches the predicate.bool Function(ZenQuery query): Refetches queries matching the query predicate.nullor no arguments: Refetches ALL active enabled queries in the cache.
Implementation
Future<void> refetchQueries([dynamic filterOrPredicate]) async {
final List<ZenQuery> queriesToRefetch;
if (filterOrPredicate == null) {
queriesToRefetch = _queries.values
.where((q) => !q.isDisposed && q.enabled.value)
.toList();
} else if (filterOrPredicate is ZenQueryFilter) {
queriesToRefetch =
getQueries(filterOrPredicate).where((q) => q.enabled.value).toList();
} else if (filterOrPredicate is bool Function(String key)) {
queriesToRefetch = _queries.entries
.where((e) =>
filterOrPredicate(e.key) &&
!e.value.isDisposed &&
e.value.enabled.value)
.map((e) => e.value)
.toList();
} else if (filterOrPredicate is bool Function(ZenQuery query)) {
queriesToRefetch = _queries.values
.where(
(q) => !q.isDisposed && q.enabled.value && filterOrPredicate(q))
.toList();
} else {
queriesToRefetch = [];
}
final futures = <Future>[];
for (final q in queriesToRefetch) {
futures.add(
Future(() async {
try {
await q.refetch();
} catch (e) {
ZenLogger.logWarning(
'Failed to refetch query ${q.queryKey}: $e',
);
}
}),
);
}
await Future.wait(futures);
ZenLogger.logDebug('Refetched ${queriesToRefetch.length} queries');
}