Merge branch 'voip/fix-call-breaks-caused-by-aborting-screen-sharing' into 'main'
Fix call breaks issue caused by aborting screen sharing. Closes famedly-web#212 See merge request famedly/company/frontend/famedlysdk!938
This commit is contained in:
		
						commit
						999dbb4434
					
				|  | @ -361,15 +361,19 @@ class CallSession { | ||||||
|     await _preparePeerConnection(); |     await _preparePeerConnection(); | ||||||
|     setCallState(CallState.kCreateOffer); |     setCallState(CallState.kCreateOffer); | ||||||
|     final stream = await _getUserMedia(type); |     final stream = await _getUserMedia(type); | ||||||
|  |     if (stream != null) { | ||||||
|       _addLocalStream(stream, SDPStreamMetadataPurpose.Usermedia); |       _addLocalStream(stream, SDPStreamMetadataPurpose.Usermedia); | ||||||
|     } |     } | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   Future<void> initWithInvite(CallType type, RTCSessionDescription offer, |   Future<void> initWithInvite(CallType type, RTCSessionDescription offer, | ||||||
|       SDPStreamMetadata? metadata, int lifetime) async { |       SDPStreamMetadata? metadata, int lifetime) async { | ||||||
|     await _preparePeerConnection(); |     await _preparePeerConnection(); | ||||||
| 
 | 
 | ||||||
|     _addLocalStream( |     final stream = await _getUserMedia(type); | ||||||
|         await _getUserMedia(type), SDPStreamMetadataPurpose.Usermedia); |     if (stream != null) { | ||||||
|  |       _addLocalStream(stream, SDPStreamMetadataPurpose.Usermedia); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     if (metadata != null) { |     if (metadata != null) { | ||||||
|       _updateRemoteSDPStreamMetadata(metadata); |       _updateRemoteSDPStreamMetadata(metadata); | ||||||
|  | @ -530,7 +534,7 @@ class CallSession { | ||||||
| 
 | 
 | ||||||
|     if (enabled) { |     if (enabled) { | ||||||
|       try { |       try { | ||||||
|         final MediaStream? stream = await _getDisplayMedia(); |         final stream = await _getDisplayMedia(); | ||||||
|         if (stream == null) { |         if (stream == null) { | ||||||
|           return false; |           return false; | ||||||
|         } |         } | ||||||
|  | @ -972,7 +976,7 @@ class CallSession { | ||||||
|     localCandidates.clear(); |     localCandidates.clear(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Future<MediaStream> _getUserMedia(CallType type) async { |   Future<MediaStream?> _getUserMedia(CallType type) async { | ||||||
|     final mediaConstraints = { |     final mediaConstraints = { | ||||||
|       'audio': true, |       'audio': true, | ||||||
|       'video': type == CallType.kVideo |       'video': type == CallType.kVideo | ||||||
|  | @ -992,10 +996,10 @@ class CallSession { | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       _getUserMediaFailed(e); |       _getUserMediaFailed(e); | ||||||
|     } |     } | ||||||
|     return Null as MediaStream; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Future<MediaStream> _getDisplayMedia() async { |   Future<MediaStream?> _getDisplayMedia() async { | ||||||
|     final mediaConstraints = { |     final mediaConstraints = { | ||||||
|       'audio': false, |       'audio': false, | ||||||
|       'video': true, |       'video': true, | ||||||
|  | @ -1005,7 +1009,7 @@ class CallSession { | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       _getUserMediaFailed(e); |       _getUserMediaFailed(e); | ||||||
|     } |     } | ||||||
|     return Null as MediaStream; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Future<RTCPeerConnection> _createPeerConnection() async { |   Future<RTCPeerConnection> _createPeerConnection() async { | ||||||
|  | @ -1110,6 +1114,7 @@ class CallSession { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   void _getUserMediaFailed(dynamic err) { |   void _getUserMediaFailed(dynamic err) { | ||||||
|  |     if (state != CallState.kConnected) { | ||||||
|       Logs().w('Failed to get user media - ending call ${err.toString()}'); |       Logs().w('Failed to get user media - ending call ${err.toString()}'); | ||||||
|       fireCallEvent(CallEvent.kError); |       fireCallEvent(CallEvent.kError); | ||||||
|       lastError = CallError( |       lastError = CallError( | ||||||
|  | @ -1118,6 +1123,7 @@ class CallSession { | ||||||
|           err); |           err); | ||||||
|       terminate(CallParty.kLocal, CallErrorCode.NoUserMedia, false); |       terminate(CallParty.kLocal, CallErrorCode.NoUserMedia, false); | ||||||
|     } |     } | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   void onSelectAnswerReceived(String? selectedPartyId) { |   void onSelectAnswerReceived(String? selectedPartyId) { | ||||||
|     if (direction != CallDirection.kIncoming) { |     if (direction != CallDirection.kIncoming) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue