From 9e649b7d37bb15277c9396471d6459383e8dde9f Mon Sep 17 00:00:00 2001 From: td Date: Fri, 20 Jan 2023 03:46:20 +0530 Subject: [PATCH] fix: tweak some stuff in group calls code for group calls onboarding feat --- lib/src/voip/call.dart | 12 ++++-------- lib/src/voip/group_call.dart | 4 ---- lib/src/voip/voip.dart | 23 ++++++++++++++--------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/lib/src/voip/call.dart b/lib/src/voip/call.dart index 018ff787..922c49c7 100644 --- a/lib/src/voip/call.dart +++ b/lib/src/voip/call.dart @@ -951,17 +951,13 @@ class CallSession { if (localUserMediaStream != null) localUserMediaStream!.stream!.id: SDPStreamPurpose( purpose: SDPStreamMetadataPurpose.Usermedia, - audio_muted: - localUserMediaStream!.stream!.getAudioTracks().isEmpty, - video_muted: - localUserMediaStream!.stream!.getVideoTracks().isEmpty), + audio_muted: localUserMediaStream!.audioMuted, + video_muted: localUserMediaStream!.videoMuted), if (localScreenSharingStream != null) localScreenSharingStream!.stream!.id: SDPStreamPurpose( purpose: SDPStreamMetadataPurpose.Screenshare, - audio_muted: - localScreenSharingStream!.stream!.getAudioTracks().isEmpty, - video_muted: - localScreenSharingStream!.stream!.getVideoTracks().isEmpty), + audio_muted: localScreenSharingStream!.audioMuted, + video_muted: localScreenSharingStream!.videoMuted), }); await pc!.setLocalDescription(answer); diff --git a/lib/src/voip/group_call.dart b/lib/src/voip/group_call.dart index 653606b3..d4429ed5 100644 --- a/lib/src/voip/group_call.dart +++ b/lib/src/voip/group_call.dart @@ -468,10 +468,6 @@ class GroupCall { localDesktopCapturerSourceId = null; } - if (state != GroupCallState.Entered) { - return; - } - _removeParticipant(client.userID!); removeMemberStateEvent(); diff --git a/lib/src/voip/voip.dart b/lib/src/voip/voip.dart index 8e48f6b6..5fc28ace 100644 --- a/lib/src/voip/voip.dart +++ b/lib/src/voip/voip.dart @@ -604,28 +604,33 @@ class VoIP { Future fetchOrCreateGroupCall(String roomId) async { final groupCall = getGroupCallForRoom(roomId); - if (groupCall != null) return groupCall; - final room = client.getRoomById(roomId); - if (room == null) { Logs().w('Not found room id = $roomId'); return null; } + if (groupCall != null) { + if (!room.canJoinGroupCall) { + Logs().w('No permission to join group calls in room $roomId'); + return null; + } + return groupCall; + } + if (!room.groupCallsEnabled) { await room.enableGroupCalls(); } if (room.canCreateGroupCall) { // The call doesn't exist, but we can create it - return await newGroupCall( - roomId, GroupCallType.Video, GroupCallIntent.Prompt); - } - if (room.canJoinGroupCall) { - Logs().w('No permission to join group calls in room $roomId'); - return null; + final groupCall = await newGroupCall( + roomId, GroupCallType.Video, GroupCallIntent.Prompt); + if (groupCall != null) { + await groupCall.sendMemberStateEvent(); + } + return groupCall; } final completer = Completer();