getUsers method

Future<List<UserModel>> getUsers({
  1. int limit = 50,
  2. DocumentSnapshot<Object?>? startAt,
})

Implementation

Future<List<UserModel>> getUsers({
  int limit = 50,
  DocumentSnapshot? startAt,
}) async {
  try {
    final usersRef = _db.collection('Users');
    var query = usersRef.limit(limit);
    if (startAt is DocumentSnapshot) {
      query = query.startAtDocument(startAt);
    }
    final snapshot = await query.get();

    if (snapshot.docs.isEmpty) {
      return [];
    }
    final toParse = snapshot.docs.map((e) async {
      final user = await UserModel.fromDocumentSnapshot(e);

      return user;
    }).toList();

    final parsed = await Future.wait(toParse);
    return parsed;
  } catch (err) {
    if (err is FirebaseException) {
      throw UsersDataServiceException.fromRdevException(
          err.toRdevException());
    }
    throw UsersDataServiceException(message: err.toString());
  }
}