فهرست منبع

Extract methods to add and remove call participants

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Daniel Calviño Sánchez 2 سال پیش
والد
کامیت
2cb7572dbc
1فایلهای تغییر یافته به همراه52 افزوده شده و 40 حذف شده
  1. 52 40
      app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

+ 52 - 40
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -1973,31 +1973,7 @@ public class CallActivity extends CallBaseActivity {
             if (!publisher) {
                 CallParticipant callParticipant = callParticipants.get(sessionId);
                 if (callParticipant == null) {
-                    callParticipant = new CallParticipant(sessionId);
-                    callParticipants.put(sessionId, callParticipant);
-
-                    SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
-                        new CallActivityCallParticipantMessageListener(sessionId);
-                    callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
-                    signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
-
-                    if (!hasExternalSignalingServer) {
-                        OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
-                        offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
-                        signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
-                        signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
-                    }
-
-                    final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
-
-                    ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
-                        new ScreenParticipantDisplayItemManager(callParticipantModel);
-                    screenParticipantDisplayItemManagers.put(sessionId, screenParticipantDisplayItemManager);
-                    callParticipantModel.addObserver(screenParticipantDisplayItemManager, screenParticipantDisplayItemManagersHandler);
-
-                    runOnUiThread(() -> {
-                        addParticipantDisplayItem(callParticipantModel, "video");
-                    });
+                    callParticipant = addCallParticipant(sessionId);
                 }
 
                 if ("screen".equals(type)) {
@@ -2017,6 +1993,36 @@ public class CallActivity extends CallBaseActivity {
         }
     }
 
+    private CallParticipant addCallParticipant(String sessionId) {
+        CallParticipant callParticipant = new CallParticipant(sessionId);
+        callParticipants.put(sessionId, callParticipant);
+
+        SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
+            new CallActivityCallParticipantMessageListener(sessionId);
+        callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
+        signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
+
+        if (!hasExternalSignalingServer) {
+            OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
+            offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
+            signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
+            signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
+        }
+
+        final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
+
+        ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
+            new ScreenParticipantDisplayItemManager(callParticipantModel);
+        screenParticipantDisplayItemManagers.put(sessionId, screenParticipantDisplayItemManager);
+        callParticipantModel.addObserver(screenParticipantDisplayItemManager, screenParticipantDisplayItemManagersHandler);
+
+        runOnUiThread(() -> {
+            addParticipantDisplayItem(callParticipantModel, "video");
+        });
+
+        return callParticipant;
+    }
+
     private List<PeerConnectionWrapper> getPeerConnectionWrapperListForSessionId(String sessionId) {
         List<PeerConnectionWrapper> internalList = new ArrayList<>();
         for (PeerConnectionWrapper peerConnectionWrapper : peerConnectionWrapperList) {
@@ -2055,26 +2061,32 @@ public class CallActivity extends CallBaseActivity {
         }
 
         if (!justScreen) {
-            CallParticipant callParticipant = callParticipants.remove(sessionId);
-            if (callParticipant != null) {
-                ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
-                    screenParticipantDisplayItemManagers.remove(sessionId);
-                callParticipant.getCallParticipantModel().removeObserver(screenParticipantDisplayItemManager);
+            removeCallParticipant(sessionId);
+        }
+    }
 
-                callParticipant.destroy();
+    private void removeCallParticipant(String sessionId) {
+        CallParticipant callParticipant = callParticipants.remove(sessionId);
+        if (callParticipant == null) {
+            return;
+        }
 
-                SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
-                signalingMessageReceiver.removeListener(listener);
+        ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
+            screenParticipantDisplayItemManagers.remove(sessionId);
+        callParticipant.getCallParticipantModel().removeObserver(screenParticipantDisplayItemManager);
 
-                OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
-                if (offerAnswerNickProvider != null) {
-                    signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
-                    signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
-                }
+        callParticipant.destroy();
 
-                runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
-            }
+        SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
+        signalingMessageReceiver.removeListener(listener);
+
+        OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
+        if (offerAnswerNickProvider != null) {
+            signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
+            signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
         }
+
+        runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
     }
 
     private void removeParticipantDisplayItem(String sessionId, String videoStreamType) {