class FriendRelation { final String id; final String friendId; final RequestStatus requestStatus; const FriendRelation({ required this.id, required this.friendId, required this.requestStatus, }); factory FriendRelation.fromMap(String relationId, Map map, String userId) { return FriendRelation( id: relationId, friendId: _getId(map, userId), requestStatus: getRequestStatus(map["request_status"]), ); } static String _getId(Map map, String userId) { if (map['user_id'] == userId) { return map['friend_id']; } else { return map['user_id']; } } static RequestStatus getRequestStatus(String status) { if (status == "pending") return RequestStatus.pending; if (status == "accepted") return RequestStatus.accepted; if (status == "rejected") return RequestStatus.rejected; throw Exception("Request status invalid"); } } enum RequestStatus { pending, accepted, rejected, }