From f70f94e6be18c07e64bdb1b6491b48407c98bee1 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 5 Jan 2022 21:10:54 +0100 Subject: [PATCH] hangup when currentSession has inCall flag = 0 Signed-off-by: Marcel Hibbe --- .../talk/activities/CallActivity.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index 900b47060..85cdbd87d 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -1618,10 +1618,12 @@ public class CallActivity extends CallBaseActivity { } private void processUsersInRoom(List> users) { + Log.d(TAG, "processUsersInRoom"); List newSessions = new ArrayList<>(); Set oldSessions = new HashSet<>(); hasMCU = hasExternalSignalingServer && webSocketClient != null && webSocketClient.hasMCU(); + Log.d(TAG, " hasMCU is " + hasMCU); // The signaling session is the same as the Nextcloud session only when the MCU is not used. @@ -1630,13 +1632,18 @@ public class CallActivity extends CallBaseActivity { currentSessionId = webSocketClient.getSessionId(); } + Log.d(TAG, " currentSessionId is " + currentSessionId); + for (HashMap participant : users) { - if (!participant.get("sessionId").equals(currentSessionId)) { + if (!participant.get("sessionId").equals(currentSessionId)) { // own session is skipped Object inCallObject = participant.get("inCall"); boolean isNewSession; if (inCallObject instanceof Boolean) { isNewSession = (boolean) inCallObject; } else { + Log.d(TAG, + " inCallObject of participant " + participant.get("sessionId").toString().substring(0,4) + + " : " + inCallObject); isNewSession = ((long) inCallObject) != 0; } @@ -1645,6 +1652,13 @@ public class CallActivity extends CallBaseActivity { } else { oldSessions.add(participant.get("sessionId").toString()); } + } else { + Object inCallObject = participant.get("inCall"); + Log.d(TAG, " inCallObject of currentSessionId: " + inCallObject); + if(((long) inCallObject) == 0){ + Log.d(TAG, " hangup!!!!!!!!!!"); + hangup(true); + } } } @@ -1674,6 +1688,7 @@ public class CallActivity extends CallBaseActivity { } for (String sessionId : newSessions) { + Log.d(TAG, " newSession joined: " + sessionId); getPeerConnectionWrapperForSessionIdAndType(sessionId, "video", false); } @@ -1682,6 +1697,7 @@ public class CallActivity extends CallBaseActivity { } for (String sessionId : oldSessions) { + Log.d(TAG, " oldSession that will be removed is: " + sessionId); endPeerConnection(sessionId, false); } }