chore: Improve via calculation

This commit is contained in:
Christian Kußowski 2025-12-03 14:46:28 +01:00
commit 2c4a16d608
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652

View file

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