diff --git a/lib/src/room.dart b/lib/src/room.dart index 74bdcaa0..39365633 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -268,6 +268,12 @@ class Room { .asUser .avatarUrl; } + if (isDirectChat) { + final user = directChatMatrixID; + if (user != null) { + return getUserByMXIDSync(user).avatarUrl; + } + } if (membership == Membership.invite && getState(EventTypes.RoomMember, client.userID) != null) { return getState(EventTypes.RoomMember, client.userID).sender.avatarUrl; @@ -404,26 +410,18 @@ class Room { canonicalAlias.length > 3) { return canonicalAlias.localpart; } - var heroes = []; - if (summary.mHeroes != null && - summary.mHeroes.isNotEmpty && - summary.mHeroes.any((h) => h.isNotEmpty)) { - heroes = summary.mHeroes; - } else { - if (states[EventTypes.RoomMember] is Map) { - for (final entry in states[EventTypes.RoomMember].entries) { - final state = entry.value; - if (state.type == EventTypes.RoomMember && - state.stateKey != client?.userID) heroes.add(state.stateKey); - } - } - } - if (heroes.isNotEmpty) { - return heroes + if (summary.mHeroes != null && summary.mHeroes.isNotEmpty) { + return summary.mHeroes .where((hero) => hero.isNotEmpty) .map((hero) => getUserByMXIDSync(hero).calcDisplayname()) .join(', '); } + if (isDirectChat) { + final user = directChatMatrixID; + if (user != null) { + return getUserByMXIDSync(user).displayName; + } + } if (membership == Membership.invite && getState(EventTypes.RoomMember, client.userID) != null) { return getState(EventTypes.RoomMember, client.userID)