enrichRoom function

MRoom enrichRoom({
  1. required MRoom room,
  2. required String roomID,
  3. required bool invite,
})

Enriches a single room object with the group name, avatar URL, and invite status

Implementation

MRoom enrichRoom({
  required MRoom room,
  required String roomID,
  required bool invite,
}) {
  final List<MMessage?>? stateEvents =
      invite ? room.inviteState?.events : room.state?.events;

  MMessage? nameEvent;

  final MMessage? stateNameEvent = stateEvents?.firstWhere(
    (MMessage? m) => m?.eventType == EventTypes.name,
    orElse: () => MMessage.initial(),
  );

  final MMessage? avatar = stateEvents?.firstWhere(
    (MMessage? m) => m?.eventType == EventTypes.avatar,
    orElse: () => MMessage.initial(),
  );

  if (stateNameEvent == MMessage.initial()) {
    // Attempt to find the group name in the state events
    final MMessage? timelineNameEvent = room.timeline?.events?.firstWhere(
      (MMessage? m) => m?.eventType == EventTypes.name,
      orElse: () => MMessage.initial(),
    );

    nameEvent = timelineNameEvent;
  } else {
    nameEvent = stateNameEvent;
  }

  final MRoom newRoom = room.copyWith(
    name: nameEvent?.content?.name,
    roomID: roomID,
    invite: invite,
    avatarUri: avatar?.content?.url ?? '',
  );

  return newRoom;
}