unfollowUser method

Future<void> unfollowUser({
  1. required String uid,
  2. required String friendId,
})

Implementation

Future<void> unfollowUser({
  required final String uid,
  required final String friendId,
}) async {
  try {
    final _userRef = PeamanReferenceHelper.usersCol.doc(uid);
    final _friendRef = PeamanReferenceHelper.usersCol.doc(friendId);

    final _userFollowingRef =
        PeamanReferenceHelper.userFollowingsCol(uid: uid).doc(friendId);
    final _friendFollowersRef =
        PeamanReferenceHelper.userFollowersCol(uid: friendId).doc(uid);

    final _futures = <Future>[];

    final _userFollowingFuture = _userFollowingRef.delete();
    _futures.add(_userFollowingFuture);

    final _friendFollowersFuture = _friendFollowersRef.delete();
    _futures.add(_friendFollowersFuture);

    final _userUpdateFuture = _userRef.update({
      'following': FieldValue.increment(-1),
    });
    _futures.add(_userUpdateFuture);

    final _friendUpdateFuture = _friendRef.update({
      'followers': FieldValue.increment(-1),
    });
    _futures.add(_friendUpdateFuture);

    await Future.wait(_futures);
    print('Success: Unfollowing friend $friendId');
  } catch (e) {
    print(e);
    print('Error!!!: Unfollowing friend');
  }
}