onData property

  1. @override
Future<void> Function(List<T>? value, User? user) get onData
override

Handles incoming data updates from Firestore with pre-sync notification.

This callback is triggered when:

  • New document data is received from Firestore
  • The user's authentication state changes

The method:

  • Notifies before sync via beforeSyncNotifyUpdate if user is authenticated
  • Updates local state with new document data
  • Marks the service as ready after first update
  • Clears local state if user is not authenticated

Parameters:

  • value - The new document values from Firestore
  • user - The current Firebase user

Implementation

@override
Future<void> Function(List<T>? value, User? user) get onData {
  return (value, user) async {
    final docs = value ?? [];
    if (user != null) {
      log.debug('Updating docs for user ${user.uid}');
      await beforeSyncNotifyUpdate(docs);
      docsPerIdInformer.update(
        docs.toIdMap((element) => element.id),
      );
      _isReady.completeIfNotComplete();
      log.debug('Updated ${docs.length} docs');
    } else {
      log.debug('User is null, clearing docs');
      await beforeSyncNotifyUpdate([]);
      docsPerIdInformer.update(
        {},
      );
    }
  };
}