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