notifySubscriptionsWithLocalData<_Model extends OfflineFirstWithGraphqlModel> method
- @protected
- @visibleForTesting
- bool notifyWhenEmpty = true,
Iterate through subscriptions after an upsert and notify any subscribe listeners.
Implementation
@protected
@visibleForTesting
Future<void> notifySubscriptionsWithLocalData<_Model extends OfflineFirstWithGraphqlModel>(
{bool notifyWhenEmpty = true}) async {
final queriesControllers = subscriptions[_Model]?.entries;
if (queriesControllers?.isEmpty ?? true) return;
for (final queryController in queriesControllers!) {
final query = queryController.key;
final controller = queryController.value;
if (controller.isClosed || controller.isPaused) continue;
if (query == null || memoryCacheProvider.canFind<_Model>(query)) {
final results = memoryCacheProvider.get<_Model>(query: query);
if (!controller.isClosed && (results?.isNotEmpty ?? false)) controller.add(results!);
}
final existsInSqlite = await sqliteProvider.exists<_Model>(query: query, repository: this);
if (existsInSqlite) {
final results = await sqliteProvider.get<_Model>(query: query, repository: this);
if (!controller.isClosed) controller.add(results);
} else if (notifyWhenEmpty) {
if (!controller.isClosed) controller.add(<_Model>[]);
}
}
}