From 350cb52751c08463268f7df63b8bcbbbb3772f74 Mon Sep 17 00:00:00 2001 From: Jonathan Ma Date: Tue, 17 Feb 2026 16:04:36 -0800 Subject: [PATCH 1/5] include calling power level overrides when creating voice chats --- commet/lib/client/matrix/matrix_client.dart | 23 ++++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/commet/lib/client/matrix/matrix_client.dart b/commet/lib/client/matrix/matrix_client.dart index fba2ee803..7871b0e36 100644 --- a/commet/lib/client/matrix/matrix_client.dart +++ b/commet/lib/client/matrix/matrix_client.dart @@ -443,6 +443,7 @@ class MatrixClient extends Client { @override Future createRoom(CreateRoomArgs args) async { var creationContent = null; + Map? powerLevelContentOverride = {}; List? initialState; if (args.roomType == RoomType.photoAlbum) { @@ -451,6 +452,12 @@ class MatrixClient extends Client { if (args.roomType == RoomType.voipRoom) { creationContent = {"type": "org.matrix.msc3417.call"}; + powerLevelContentOverride = { + "events": { + "org.matrix.msc3401.call": 0, + "org.matrix.msc3401.call.member": 0 + } + }; } if (args.roomType == RoomType.calendar) { @@ -486,14 +493,14 @@ class MatrixClient extends Client { } var id = await _matrixClient.createRoom( - creationContent: creationContent, - name: args.name, - initialState: initialState, - topic: args.topic, - visibility: args.visibility == RoomVisibility.private - ? matrix.Visibility.private - : matrix.Visibility.public, - ); + creationContent: creationContent, + name: args.name, + initialState: initialState, + topic: args.topic, + visibility: args.visibility == RoomVisibility.private + ? matrix.Visibility.private + : matrix.Visibility.public, + powerLevelContentOverride: powerLevelContentOverride); await _matrixClient.waitForRoomInSync(id); From 3bf884a8000994feb1310abf6212de8e72e055d6 Mon Sep 17 00:00:00 2001 From: Jonathan Ma Date: Tue, 17 Feb 2026 17:56:46 -0800 Subject: [PATCH 2/5] reset voip room view after ending call --- commet/lib/ui/organisms/voip_room_view/voip_room_view.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/commet/lib/ui/organisms/voip_room_view/voip_room_view.dart b/commet/lib/ui/organisms/voip_room_view/voip_room_view.dart index d1d381976..663e32f16 100644 --- a/commet/lib/ui/organisms/voip_room_view/voip_room_view.dart +++ b/commet/lib/ui/organisms/voip_room_view/voip_room_view.dart @@ -65,6 +65,12 @@ class _VoipRoomViewState extends State { var color = Theme.of(context).colorScheme.surfaceContainer; if (currentSession == null) return unjoinedView(color); + if (currentSession?.state == VoipState.ended) { + setState(() { + joining = false; + }); + return unjoinedView(color); + } return CallWidget(currentSession!); } From 66fc66bd5052954045a71b13657b48b9dbedb43c Mon Sep 17 00:00:00 2001 From: Jonathan Ma Date: Thu, 19 Feb 2026 11:48:25 -0500 Subject: [PATCH 3/5] pull existing powerlevels and override in separate call --- commet/lib/client/matrix/matrix_client.dart | 36 +++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/commet/lib/client/matrix/matrix_client.dart b/commet/lib/client/matrix/matrix_client.dart index 45a9f81e2..75549663f 100644 --- a/commet/lib/client/matrix/matrix_client.dart +++ b/commet/lib/client/matrix/matrix_client.dart @@ -422,7 +422,7 @@ class MatrixClient extends Client { @override Future createRoom(CreateRoomArgs args) async { var creationContent = null; - Map? powerLevelContentOverride = {}; + Map? powerLevelAdditions = {}; List? initialState; if (args.roomType == RoomType.photoAlbum) { @@ -431,7 +431,7 @@ class MatrixClient extends Client { if (args.roomType == RoomType.voipRoom) { creationContent = {"type": "org.matrix.msc3417.call"}; - powerLevelContentOverride = { + powerLevelAdditions = { "events": { "org.matrix.msc3401.call": 0, "org.matrix.msc3401.call.member": 0 @@ -472,14 +472,14 @@ class MatrixClient extends Client { } var id = await _matrixClient.createRoom( - creationContent: creationContent, - name: args.name, - initialState: initialState, - topic: args.topic, - visibility: args.visibility == RoomVisibility.private - ? matrix.Visibility.private - : matrix.Visibility.public, - powerLevelContentOverride: powerLevelContentOverride); + creationContent: creationContent, + name: args.name, + initialState: initialState, + topic: args.topic, + visibility: args.visibility == RoomVisibility.private + ? matrix.Visibility.private + : matrix.Visibility.public, + ); await _matrixClient.waitForRoomInSync(id); @@ -488,6 +488,22 @@ class MatrixClient extends Client { await matrixRoom.enableEncryption(); } + if (powerLevelAdditions.isNotEmpty) { + var currentPerms = + await matrixRoom.getState(matrix.EventTypes.RoomPowerLevels)?.content; + if (currentPerms != null) { + var newPerms = { + ...currentPerms, + "events": { + ...?currentPerms["events"] as Map?, + ...?powerLevelAdditions["events"] as Map?, + } + }; + _matrixClient.setRoomStateWithKey( + id, "m.room.power_levels", "", newPerms); + } + } + if (hasRoom(id)) return getRoom(id)!; var room = MatrixRoom(this, matrixRoom, _matrixClient); rooms.add(room); From 1762eab8d26eaeb6ee7fb26d077c96420b3ab589 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:45:54 +1030 Subject: [PATCH 4/5] Update matrix_client.dart --- commet/lib/client/matrix/matrix_client.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/commet/lib/client/matrix/matrix_client.dart b/commet/lib/client/matrix/matrix_client.dart index 75549663f..62cd25a2b 100644 --- a/commet/lib/client/matrix/matrix_client.dart +++ b/commet/lib/client/matrix/matrix_client.dart @@ -489,8 +489,12 @@ class MatrixClient extends Client { } if (powerLevelAdditions.isNotEmpty) { - var currentPerms = - await matrixRoom.getState(matrix.EventTypes.RoomPowerLevels)?.content; + var events = await matrixClient.getRoomState(id); + + var currentPerms = events + .firstWhereOrNull((i) => i.type == matrix.EventTypes.RoomPowerLevels) + ?.content; + if (currentPerms != null) { var newPerms = { ...currentPerms, From 8c0bcdff336b41a3b10223120426eaf175df3830 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:48:05 +1030 Subject: [PATCH 5/5] Update matrix_client.dart --- commet/lib/client/matrix/matrix_client.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commet/lib/client/matrix/matrix_client.dart b/commet/lib/client/matrix/matrix_client.dart index 62cd25a2b..0bac85be0 100644 --- a/commet/lib/client/matrix/matrix_client.dart +++ b/commet/lib/client/matrix/matrix_client.dart @@ -504,7 +504,7 @@ class MatrixClient extends Client { } }; _matrixClient.setRoomStateWithKey( - id, "m.room.power_levels", "", newPerms); + id, matrix.EventTypes.RoomPowerLevels, "", newPerms); } }