From a540bc6ef79df2399d0c6c88b255ddcc53e1d513 Mon Sep 17 00:00:00 2001 From: td Date: Tue, 11 Jun 2024 19:00:39 +0530 Subject: [PATCH 1/2] fix: dont override passed powerlevels with groupcall powerlevels --- lib/src/client.dart | 20 +++++----- test/client_test.dart | 93 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index 7635ad19..f11824c9 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -814,17 +814,19 @@ class Client extends MatrixApi { } if (groupCall) { powerLevelContentOverride ??= {}; - powerLevelContentOverride['events'] = { - EventTypes.GroupCallMember: 0, - }; + powerLevelContentOverride['events'] ??= {}; + powerLevelContentOverride['events'][EventTypes.GroupCallMember] ??= + powerLevelContentOverride['events_default'] ?? 0; } + final roomId = await createRoom( - invite: invite, - preset: preset, - name: groupName, - initialState: initialState, - visibility: visibility, - powerLevelContentOverride: powerLevelContentOverride); + invite: invite, + preset: preset, + name: groupName, + initialState: initialState, + visibility: visibility, + powerLevelContentOverride: powerLevelContentOverride, + ); if (waitForSync) { if (getRoomById(roomId) == null) { diff --git a/test/client_test.dart b/test/client_test.dart index d38ade63..80950b5c 100644 --- a/test/client_test.dart +++ b/test/client_test.dart @@ -887,8 +887,101 @@ void main() { test('startDirectChat', () async { await matrix.startDirectChat('@alice:example.com', waitForSync: false); }); + test('createGroupChat', () async { await matrix.createGroupChat(groupName: 'Testgroup', waitForSync: false); + + expect( + json.decode( + FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.last), + { + 'initial_state': [ + { + 'content': {'algorithm': 'm.megolm.v1.aes-sha2'}, + 'type': 'm.room.encryption' + } + ], + 'name': 'Testgroup', + 'preset': 'private_chat' + }, + ); + + await matrix.createGroupChat( + groupName: 'Testgroup', + waitForSync: false, + groupCall: true, + powerLevelContentOverride: {'events_default': 12}); + + expect( + json.decode( + FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.last), + { + 'initial_state': [ + { + 'content': {'algorithm': 'm.megolm.v1.aes-sha2'}, + 'type': 'm.room.encryption' + } + ], + 'name': 'Testgroup', + 'power_level_content_override': { + 'events_default': 12, + 'events': {'com.famedly.call.member': 12} + }, + 'preset': 'private_chat' + }, + ); + + await matrix.createGroupChat( + groupName: 'Testgroup', + waitForSync: false, + groupCall: true, + powerLevelContentOverride: { + 'events_default': 12, + 'events': {'com.famedly.call.member': 14} + }); + + expect( + json.decode( + FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.last), + { + 'initial_state': [ + { + 'content': {'algorithm': 'm.megolm.v1.aes-sha2'}, + 'type': 'm.room.encryption' + } + ], + 'name': 'Testgroup', + 'power_level_content_override': { + 'events_default': 12, + 'events': {'com.famedly.call.member': 14} + }, + 'preset': 'private_chat' + }, + ); + + await matrix.createGroupChat( + groupName: 'Testgroup', + waitForSync: false, + groupCall: true, + ); + + expect( + json.decode( + FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.last), + { + 'initial_state': [ + { + 'content': {'algorithm': 'm.megolm.v1.aes-sha2'}, + 'type': 'm.room.encryption' + } + ], + 'name': 'Testgroup', + 'power_level_content_override': { + 'events': {'com.famedly.call.member': 0} + }, + 'preset': 'private_chat' + }, + ); }); test('Test the fake store api', () async { final database = await getDatabase(null); From 373518557f2bf2e3bbb87ee4d0d61e1be6b19d44 Mon Sep 17 00:00:00 2001 From: td Date: Tue, 11 Jun 2024 19:00:44 +0530 Subject: [PATCH 2/2] chore: make ignored call mem logging verbose --- lib/src/voip/group_call_session.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/voip/group_call_session.dart b/lib/src/voip/group_call_session.dart index cbd7528f..5aa1880b 100644 --- a/lib/src/voip/group_call_session.dart +++ b/lib/src/voip/group_call_session.dart @@ -217,7 +217,7 @@ class GroupCallSession { mems.where((element) => !memsForCurrentGroupCall.contains(element)); for (final mem in ignoredMems) { - Logs().w( + Logs().v( '[VOIP] Ignored ${mem.userId}\'s mem event ${mem.toJson()} while updating _participants list for callId: $groupCallId, expiry status: ${mem.isExpired}'); }