enrichRoom function
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;
}