Browse Source

Merge pull request #2572 from nextcloud/fix-participant-display-items-not-updated-on-events

Fix ParticipantDisplayItems not updated on events
Andy Scherzinger 2 years ago
parent
commit
bff96f1b81

+ 11 - 10
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -2164,21 +2164,22 @@ public class CallActivity extends CallBaseActivity {
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(PeerConnectionEvent peerConnectionEvent) {
         String sessionId = peerConnectionEvent.getSessionId();
+        String participantDisplayItemId = sessionId + "-" + peerConnectionEvent.getVideoStreamType();
 
         if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
                 updateSelfVideoViewConnected(true);
-            } else if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setConnected(true);
+            } else if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setConnected(true);
                 participantsAdapter.notifyDataSetChanged();
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
                 updateSelfVideoViewConnected(false);
-            } else if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setConnected(false);
+            } else if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setConnected(false);
                 participantsAdapter.notifyDataSetChanged();
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
@@ -2200,20 +2201,20 @@ public class CallActivity extends CallBaseActivity {
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.NICK_CHANGE) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setNick(peerConnectionEvent.getNick());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setNick(peerConnectionEvent.getNick());
                 participantsAdapter.notifyDataSetChanged();
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.VIDEO_CHANGE && !isVoiceOnlyCall) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setStreamEnabled(peerConnectionEvent.getChangeValue());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setStreamEnabled(peerConnectionEvent.getChangeValue());
                 participantsAdapter.notifyDataSetChanged();
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.AUDIO_CHANGE) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setAudioEnabled(peerConnectionEvent.getChangeValue());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setAudioEnabled(peerConnectionEvent.getChangeValue());
                 participantsAdapter.notifyDataSetChanged();
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==

+ 5 - 5
app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java

@@ -345,7 +345,7 @@ public class PeerConnectionWrapper {
             Log.d("iceConnectionChangeTo: ", iceConnectionState.name() + " over " + peerConnection.hashCode() + " " + sessionId);
             if (iceConnectionState == PeerConnection.IceConnectionState.CONNECTED) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED,
-                                                                   sessionId, null, null, null));
+                                                                   sessionId, null, null, videoStreamType));
 
                 if (!isMCUPublisher) {
                     EventBus.getDefault().post(new MediaStreamEvent(remoteStream, sessionId, videoStreamType));
@@ -356,7 +356,7 @@ public class PeerConnectionWrapper {
                 }
             } else if (iceConnectionState == PeerConnection.IceConnectionState.COMPLETED) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED,
-                                                                   sessionId, null, null, null));
+                                                                   sessionId, null, null, videoStreamType));
             } else if (iceConnectionState == PeerConnection.IceConnectionState.CLOSED) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType
                         .PEER_CLOSED, sessionId, null, null, videoStreamType));
@@ -364,12 +364,12 @@ public class PeerConnectionWrapper {
                     iceConnectionState == PeerConnection.IceConnectionState.NEW ||
                     iceConnectionState == PeerConnection.IceConnectionState.CHECKING) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED,
-                                                                   sessionId, null, null, null));
+                                                                   sessionId, null, null, videoStreamType));
             } else if (iceConnectionState == PeerConnection.IceConnectionState.FAILED) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED,
-                                                                   sessionId, null, null, null));
+                                                                   sessionId, null, null, videoStreamType));
                 if (isMCUPublisher) {
-                    EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PUBLISHER_FAILED, sessionId, null, null, null));
+                    EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PUBLISHER_FAILED, sessionId, null, null, videoStreamType));
                 }
             }
         }