Pārlūkot izejas kodu

Merge pull request #300 from nextcloud/fix-datatype-issue

Fix an issue with variable datatypes
Mario Đanić 6 gadi atpakaļ
vecāks
revīzija
033a140818

+ 13 - 6
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -1172,7 +1172,7 @@ public class CallController extends BaseController {
         }
 
         if ("usersInRoom".equals(messageType)) {
-            processUsersInRoom((List<HashMap<String, String>>) signaling.getMessageWrapper());
+            processUsersInRoom((List<HashMap<String, Object>>) signaling.getMessageWrapper());
         } else if ("message".equals(messageType)) {
             NCSignalingMessage ncSignalingMessage = LoganSquare.parse(signaling.getMessageWrapper().toString(),
                     NCSignalingMessage.class);
@@ -1350,17 +1350,24 @@ public class CallController extends BaseController {
         }
     }
 
-    private void processUsersInRoom(List<HashMap<String, String>> users) {
+    private void processUsersInRoom(List<HashMap<String, Object>> users) {
         List<String> newSessions = new ArrayList<>();
         Set<String> oldSesssions = new HashSet<>();
 
-        for (HashMap<String, String> participant : users) {
+        for (HashMap<String, Object> participant : users) {
             if (!participant.get("sessionId").equals(callSession)) {
                 Object inCallObject = participant.get("inCall");
-                if ((boolean) inCallObject) {
-                    newSessions.add(participant.get("sessionId"));
+                boolean isNewSession;
+                if (inCallObject instanceof Boolean) {
+                    isNewSession = (boolean) inCallObject;
                 } else {
-                    oldSesssions.add(participant.get("sessionId"));
+                    isNewSession = ((long) inCallObject) != 0;
+                }
+
+                if (isNewSession) {
+                    newSessions.add(participant.get("sessionId").toString());
+                } else {
+                    oldSesssions.add(participant.get("sessionId").toString());
                 }
             }
         }