processMembership function

String processMembership({
  1. required MembershipEventTypes? type,
  2. required String sender,
  3. required String target,
})

Returns a human-readable string representation of membership events.

The type parameter represents the type of the membership event. The sender parameter represents the unique identifier of the sender. The target parameter represents the target user or room ID associated with the event.

Returns a human-readable string representation of the membership event. If the event type is invalid or '', an empty string is returned.

Implementation

String processMembership({
  required MembershipEventTypes? type,
  required String sender,
  required String target,
}) {
  // Check if the event type is valid and not ''
  if (type != null && type != MembershipEventTypes.unknown) {
    switch (type) {
      case MembershipEventTypes.invite:
        return '$sender invited $target to the conversation';
      case MembershipEventTypes.join:
        return '$sender joined the conversation';
      case MembershipEventTypes.leave:
        // Check if the sender is the target to handle leave and remove scenarios
        if (sender == target) {
          return '$sender left the conversation';
        } else {
          return '$sender removed $target from the conversation';
        }
      case MembershipEventTypes.ban:
        return '$target was banned from the conversation by $sender';
      default:
        return '';
    }
  }
  return '';
}