users method

Stream<List<User>> users()

Returns a stream of all users from Firebase.

Implementation

Stream<List<types.User>> users() {
  if (firebaseUser == null) return const Stream.empty();
  return getFirebaseFirestore()
      .collection(config.usersCollectionName)
      .snapshots()
      .map(
        (snapshot) => snapshot.docs.fold<List<types.User>>(
          [],
          (previousValue, doc) {
            if (firebaseUser!.uid == doc.id) return previousValue;

            final data = doc.data();

            data['createdAt'] = data['createdAt']?.millisecondsSinceEpoch;
            data['id'] = doc.id;
            data['lastSeen'] = data['lastSeen']?.millisecondsSinceEpoch;
            data['updatedAt'] = data['updatedAt']?.millisecondsSinceEpoch;

            return [...previousValue, types.User.fromJson(data)];
          },
        ),
      );
}