onData property
Handles incoming data updates from Firestore with post-sync notification.
This callback is triggered when:
- New document data is received from Firestore
- The user's authentication state changes
The method:
- Updates local state with new document data if user is authenticated
- Marks the service as ready after first update
- Notifies after sync via afterSyncNotifyUpdate
- 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<DTO>? value, User? user) get onData {
return (value, user) async {
final docs = value ?? defaultValues();
if (user != null) {
log.debug('Updating docs for user ${user.uid}');
docsNotifier.update(
TModelDocs.fromDtos(
dtos: docs,
modelBuilder: (dto) => modelBuilder(this, null, dto),
sortFilteredListsMap: initialSortFilteredListsMap?.call(),
),
);
markAsReady();
await afterSyncNotifyUpdate(docs);
log.debug('Updated ${docs.length} docs');
} else {
log.debug('User is null, clearing docs');
resetLocalDocs();
await afterSyncNotifyUpdate([]);
}
};
}