diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index ac0998f26..2aa3d7ffe 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -76,6 +76,7 @@ import com.nextcloud.talk.models.json.signaling.Signaling; import com.nextcloud.talk.models.json.signaling.SignalingOverall; import com.nextcloud.talk.models.json.signaling.settings.IceServer; import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall; +import com.nextcloud.talk.models.json.websocket.RoomOverallWebSocketMessage; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.MagicFlipView; import com.nextcloud.talk.utils.NotificationUtils; @@ -1181,7 +1182,8 @@ public class CallController extends BaseController { public void onMessageEvent(WebSocketCommunicationEvent webSocketCommunicationEvent) { if (webSocketCommunicationEvent.getType().equals("hello")) { callSession = webSocketClient.getSessionId(); - MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId(callSession); + webSocketClient.joinRoomWithRoomId(roomToken); + //MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId(callSession); } else if (webSocketCommunicationEvent.equals("MCUPeerReady")) { } } @@ -1339,6 +1341,9 @@ public class CallController extends BaseController { @Override public void onNext(GenericOverall genericOverall) { if (isMultiSession) { + if (externalSignalingServer != null) { + webSocketClient.joinRoomWithRoomId(""); + } if (getActivity() != null) { getActivity().finish(); } @@ -1371,6 +1376,10 @@ public class CallController extends BaseController { @Override public void onNext(GenericOverall genericOverall) { + if (externalSignalingServer != null) { + webSocketClient.joinRoomWithRoomId(""); + } + if (getActivity() != null) { getActivity().finish(); } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java index 569d1c9d0..eccf74412 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java @@ -33,5 +33,5 @@ import lombok.Data; @Parcel public class RoomOverallWebSocketMessage extends BaseWebSocketMessage { @JsonField(name = "room") - RoomOverallWebSocketMessage roomOverallWebSocketMessage; + RoomWebSocketMessage roomWebSocketMessage; } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java index 67798ae5c..5c1ccafb8 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java @@ -89,10 +89,6 @@ public class MagicPeerConnectionWrapper { if (peerConnection != null) { peerConnection.addStream(localMediaStream); - if (hasMCU) { - EventBus.getDefault().post(new WebSocketCommunicationEvent("MCUPeerReady", null)); - } - if (hasInitiated || hasMCU) { DataChannel.Init init = new DataChannel.Init(); init.negotiated = false; diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java index 36d4142b7..ea95490c3 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java @@ -27,10 +27,13 @@ import com.bluelinelabs.logansquare.LoganSquare; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.WebSocketCommunicationEvent; import com.nextcloud.talk.models.database.UserEntity; +import com.nextcloud.talk.models.json.rooms.RoomOverall; import com.nextcloud.talk.models.json.websocket.BaseWebSocketMessage; import com.nextcloud.talk.models.json.websocket.CallOverallWebSocketMessage; import com.nextcloud.talk.models.json.websocket.HelloResponseOverallWebSocketMessage; import com.nextcloud.talk.models.json.websocket.HelloResponseWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.RoomOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.RoomWebSocketMessage; import org.greenrobot.eventbus.EventBus; @@ -154,4 +157,18 @@ public class MagicWebSocketInstance extends WebSocketListener { public WebSocket getWebSocket() { return webSocket; } + + public void joinRoomWithRoomId(String roomId) { + RoomOverallWebSocketMessage roomOverallWebSocketMessage = new RoomOverallWebSocketMessage(); + roomOverallWebSocketMessage.setType("room"); + RoomWebSocketMessage roomWebSocketMessage = new RoomWebSocketMessage(); + roomWebSocketMessage.setRoomId(roomId); + roomWebSocketMessage.setSessiondId(sessionId); + roomOverallWebSocketMessage.setRoomWebSocketMessage(roomWebSocketMessage); + try { + webSocket.send(LoganSquare.serialize(roomOverallWebSocketMessage)); + } catch (IOException e) { + Log.e(TAG, "Failed to serialize room overall websocket message"); + } + } }