Mario Danic před 6 roky
rodič
revize
db026c4a9e

+ 5 - 1
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -1455,7 +1455,11 @@ public class CallController extends BaseController {
         }
 
         for (MagicPeerConnectionWrapper magicPeerConnectionWrapper : magicPeerConnectionWrapperList) {
-            oldSesssions.add(magicPeerConnectionWrapper.getSessionId());
+            if (externalSignalingServer != null && callSession.equals(magicPeerConnectionWrapper.getSessionId())) {
+                oldSesssions.add(magicPeerConnectionWrapper.getSessionId());
+            } else {
+                oldSesssions.add(magicPeerConnectionWrapper.getSessionId());
+            }
         }
 
         // Calculate sessions that left the call

+ 4 - 1
app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java

@@ -110,7 +110,10 @@ public class MagicPeerConnectionWrapper {
         }
 
         if (peerConnection != null) {
-            peerConnection.removeStream(localMediaStream);
+            if (localMediaStream != null) {
+                peerConnection.removeStream(localMediaStream);
+            }
+
             peerConnection.close();
             peerConnection = null;
         }

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

@@ -133,7 +133,7 @@ public class MagicWebSocketInstance extends WebSocketListener {
                         String target = (String) eventOverallWebSocketMessage.getEventMap().get("target");
                         switch (target) {
                             case "room":
-                                if (eventOverallWebSocketMessage.getType().equals("message") && eventOverallWebSocketMessage.getEventMap() != null) {
+                                if (eventOverallWebSocketMessage.getType().equals("message")) {
                                     if (eventOverallWebSocketMessage.getEventMap().containsKey("data")) {
                                         Map<String, Object> dataHashMap = (Map<String, Object>) eventOverallWebSocketMessage.getEventMap().get("data");
                                         if (dataHashMap.containsKey("chat")) {
@@ -152,11 +152,11 @@ public class MagicWebSocketInstance extends WebSocketListener {
                                 }
                                 break;
                             case "participants":
-                                if (eventOverallWebSocketMessage.getType().equals("update") && eventOverallWebSocketMessage.getEventMap() != null) {
-                                    Map<String, Object> participantsUpdateMap = eventOverallWebSocketMessage.getEventMap();
+                                if (eventOverallWebSocketMessage.getEventMap().get("type").equals("update")) {
                                     HashMap<String, String> refreshChatHashMap = new HashMap<>();
-                                    refreshChatHashMap.put("roomToken", (String) eventOverallWebSocketMessage.getEventMap().get("roomid"));
-                                    refreshChatHashMap.put("jobId", Integer.toString(magicMap.add(participantsUpdateMap.get("users"))));
+                                    HashMap<String, Object> updateEventMap = (HashMap<String, Object>) eventOverallWebSocketMessage.getEventMap().get("update");
+                                    refreshChatHashMap.put("roomToken", (String) updateEventMap.get("roomid"));
+                                    refreshChatHashMap.put("jobId", Integer.toString(magicMap.add(updateEventMap.get("users"))));
                                     eventBus.post(new WebSocketCommunicationEvent("participantsUpdate", refreshChatHashMap));
                                 }
                                 break;