getFriendshipStatus method

Future<String?> getFriendshipStatus(
  1. String currentEmail,
  2. String otherUserName
)

Retrieves the current friendship status between two users.

Returns null if no friendship exists.

Implementation

Future<String?> getFriendshipStatus(
    String currentEmail, String otherUserName) async {
  final usersRef = FirebaseFirestore.instance.collection('users');

  final userQuery =
  await usersRef.where('email', isEqualTo: currentEmail).get();
  final otherUserQuery =
  await usersRef.where('username', isEqualTo: otherUserName).get();

  if (userQuery.docs.isEmpty || otherUserQuery.docs.isEmpty) return null;

  final userRef = userQuery.docs.first.reference;
  final otherUserRef = otherUserQuery.docs.first.reference;

  final friendshipQuery = await FirebaseFirestore.instance
      .collection('friendships')
      .where(Filter.or(
    Filter.and(Filter('sender', isEqualTo: userRef),
        Filter('receiver', isEqualTo: otherUserRef)),
    Filter.and(Filter('sender', isEqualTo: otherUserRef),
        Filter('receiver', isEqualTo: userRef)),
  ))
      .get();

  if (friendshipQuery.docs.isNotEmpty) {
    return friendshipQuery.docs.first.get('status');
  }

  return null;
}