From 84ea98aa12d0dc11757f0c7e231c4398fbae7ba1 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 7 Dec 2017 11:25:20 +0100 Subject: [PATCH] Fixed joining Signed-off-by: Mario Danic --- .../nextcloud/talk/activities/CallActivity.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 76e4f4045..46a219dfc 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -83,6 +83,7 @@ import org.webrtc.VideoTrack; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -481,25 +482,24 @@ public class CallActivity extends AppCompatActivity { private void processUsersInRoom(List> users) { List newSessions = new ArrayList<>(); - List oldSesssions = new ArrayList<>(); + Set oldSesssions = new HashSet<>(); for (HashMap participant : users) { Object inCallObject = participant.get("inCall"); if (!participant.get("sessionId").equals(callSession) && (boolean)inCallObject) { newSessions.add(participant.get("sessionId")); + } else if (!participant.get("sessionId").equals(callSession) && !(boolean)inCallObject) { + oldSesssions.add(participant.get("sessionId")); } } for (MagicPeerConnectionWrapper magicPeerConnectionWrapper : magicPeerConnectionWrapperList) { - if (!magicPeerConnectionWrapper.getSessionId().equals(callSession)) { - oldSesssions.add(magicPeerConnectionWrapper.getSessionId()); - } + oldSesssions.add(magicPeerConnectionWrapper.getSessionId()); } // Calculate sessions that left the call - List leftSessions = oldSesssions; - leftSessions.removeAll(newSessions); + oldSesssions.removeAll(newSessions); // Calculate sessions that join the call newSessions.removeAll(oldSesssions); @@ -512,7 +512,7 @@ public class CallActivity extends AppCompatActivity { alwaysGetPeerConnectionWrapperForSessionId(sessionId); } - for (String sessionId : leftSessions) { + for (String sessionId : oldSesssions) { endPeerConnection(sessionId); } }