浏览代码

New updates

Mario Danic 6 年之前
父节点
当前提交
ade92c0344

+ 10 - 15
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -1219,9 +1219,6 @@ public class CallController extends BaseController {
             case "signalingMessage":
                 processMessage((NCSignalingMessage) webSocketClient.getJobWithId(Integer.valueOf(webSocketCommunicationEvent.getHashMap().get("jobId"))));
                 break;
-            case "peerConnectionReady":
-                webSocketClient.requestOfferForSessionIdWithType(webSocketCommunicationEvent.getHashMap().get("sessionId"), "video");
-                break;
         }
     }
 
@@ -1267,12 +1264,10 @@ public class CallController extends BaseController {
 
     private void processMessage(NCSignalingMessage ncSignalingMessage) {
         if (ncSignalingMessage.getRoomType().equals("video")) {
-            MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId
-                    (ncSignalingMessage.getFrom(), false);
+            MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId(ncSignalingMessage.getFrom(), false);
 
             String type = null;
-            if (ncSignalingMessage.getPayload() != null && ncSignalingMessage.getPayload().getType() !=
-                    null) {
+            if (ncSignalingMessage.getPayload() != null && ncSignalingMessage.getPayload().getType() != null) {
                 type = ncSignalingMessage.getPayload().getType();
             } else if (ncSignalingMessage.getType() != null) {
                 type = ncSignalingMessage.getType();
@@ -1490,7 +1485,11 @@ public class CallController extends BaseController {
         }
 
         for (String sessionId : newSessions) {
-            alwaysGetPeerConnectionWrapperForSessionId(sessionId, false);
+            if (!hasMCU) {
+                alwaysGetPeerConnectionWrapperForSessionId(sessionId, false);
+            } else {
+                webSocketClient.requestOfferForSessionIdWithType(sessionId, "video");
+            }
         }
 
         for (String sessionId : oldSesssions) {
@@ -1542,19 +1541,15 @@ public class CallController extends BaseController {
         } else {
             hasMCU = webSocketClient != null && webSocketClient.hasMCU();
 
-            if (sessionId == null) {
-                Log.d("MARIO", "ISNULL");
-            }
-
             if (hasMCU && publisher) {
                 magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
-                        iceServers, sdpConstraintsForMCU, sessionId, callSession, localMediaStream, true, true);
+                        iceServers, sdpConstraintsForMCU, sessionId, callSession, localMediaStream, true);
             } else if (hasMCU) {
                 magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
-                        iceServers, sdpConstraints, sessionId, callSession, null, false, true);
+                        iceServers, sdpConstraints, sessionId, callSession, null, false);
             } else {
                 magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
-                        iceServers, sdpConstraints, sessionId, callSession, localMediaStream, false, false);
+                        iceServers, sdpConstraints, sessionId, callSession, localMediaStream, false);
             }
 
             magicPeerConnectionWrapperList.add(magicPeerConnectionWrapper);

+ 3 - 0
app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.java

@@ -42,4 +42,7 @@ public class NCMessagePayload {
 
     @JsonField(name = "candidate")
     NCIceCandidate iceCandidate;
+
+    @JsonField(name = "name")
+    String name;
 }

+ 2 - 1
app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.java

@@ -43,5 +43,6 @@ public class NCSignalingMessage {
     String roomType;
     @JsonField(name = "sid")
     String sid;
-
+    @JsonField(name = "prefix")
+    String prefix;
 }

+ 2 - 7
app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java

@@ -77,7 +77,7 @@ public class MagicPeerConnectionWrapper {
                                       List<PeerConnection.IceServer> iceServerList,
                                       MediaConstraints mediaConstraints,
                                       String sessionId, String localSession, @Nullable MediaStream mediaStream,
-                                      boolean isMCUPublisher, boolean hasMCU) {
+                                      boolean isMCUPublisher) {
 
         this.localMediaStream = mediaStream;
 
@@ -95,18 +95,13 @@ public class MagicPeerConnectionWrapper {
                 peerConnection.addStream(localMediaStream);
             }
 
-            if (hasMCU || hasInitiated) {
+            if (isMCUPublisher || hasInitiated) {
                 DataChannel.Init init = new DataChannel.Init();
                 init.negotiated = false;
                 magicDataChannel = peerConnection.createDataChannel("status", init);
                 magicDataChannel.registerObserver(new MagicDataChannelObserver());
                 if (isMCUPublisher) {
                     peerConnection.createOffer(magicSdpObserver, mediaConstraints);
-                } else if (hasMCU) {
-                    HashMap<String, String> peerConnectionReadyMap = new HashMap<>();
-                    peerConnectionReadyMap.put("sessionId", sessionId);
-                    EventBus.getDefault().post(new WebSocketCommunicationEvent("peerConnectionReady", peerConnectionReadyMap));
-
                 }
             }
         }

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

@@ -164,9 +164,11 @@ public class MagicWebSocketInstance extends WebSocketListener {
                     break;
                 case "message":
                     CallOverallWebSocketMessage callOverallWebSocketMessage = LoganSquare.parse(text, CallOverallWebSocketMessage.class);
-                    HashMap<String, String> messageHashMap = new HashMap<>();
-                    messageHashMap.put("jobId", Integer.toString(magicMap.add(callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage())));
-                    eventBus.post(new WebSocketCommunicationEvent("signalingMessage", messageHashMap));
+                    if (callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage().getPrefix() == null) {
+                        HashMap<String, String> messageHashMap = new HashMap<>();
+                        messageHashMap.put("jobId", Integer.toString(magicMap.add(callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage())));
+                        eventBus.post(new WebSocketCommunicationEvent("signalingMessage", messageHashMap));
+                    }
                     break;
                 default:
                     break;