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 value from Firestoreuser
- The current Firebase user
Implementation
@override
Future<void> Function(T? value, User? user) get onData {
return (value, user) async {
if (user != null) {
log.debug('Updating doc for user ${user.uid}');
if (value != null) {
final pDoc = upsertLocalDoc(
id: value.id,
doc: (current, _) => value,
);
_isReady.completeIfNotComplete();
await afterSyncNotifyUpdate(pDoc);
} else {
_doc.update(null);
await afterSyncNotifyUpdate(value);
}
log.debug('Updated doc');
} else {
log.debug('User is null, clearing doc');
_doc.update(null);
await afterSyncNotifyUpdate(null);
}
};
}