diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 61f2dec97..c64063595 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1114,19 +1114,29 @@ class ChatController extends State } void goToNewRoomAction() async { - final newRoomId = room - .getState(EventTypes.RoomTombstone)! - .parsedTombstoneContent - .replacementRoom; final result = await showFutureLoadingDialog( context: context, - future: () => room.client.joinRoom( - room - .getState(EventTypes.RoomTombstone)! - .parsedTombstoneContent - .replacementRoom, - via: [newRoomId.domain!], - ), + future: () async { + final users = await room.requestParticipants( + [Membership.join, Membership.leave], + true, + false, + ); + users.sort((a, b) => a.powerLevel.compareTo(b.powerLevel)); + final via = users + .map((user) => user.id.domain) + .whereType() + .toSet() + .take(10) + .toList(); + return room.client.joinRoom( + room + .getState(EventTypes.RoomTombstone)! + .parsedTombstoneContent + .replacementRoom, + via: via, + ); + }, ); if (result.error != null) return; if (!mounted) return;