enrichRoom function

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

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

Implementation

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

  Message? nameEvent;

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

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

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

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

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

  return newRoom;
}