Skip to content

Commit 5e8026a

Browse files
committed
fix(CallActivity): check participant's nextcloud session ids if not MCU
The logic in CallActivity ends up comparing our nextcloud session id to the call session ID when handling a "call participants changed" message. If hasMCU, then compare call session IDs, otherwise compare nextcloud session IDs. See: #5452 Signed-off-by: Alexandra Parker <alex.iris.parker@gmail.com>
1 parent 633c6a0 commit 5e8026a

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2123,11 +2123,12 @@ class CallActivity : CallBaseActivity() {
21232123

21242124
for (participant in participantsInCall) {
21252125
val inCallFlag = participant.inCall
2126-
if (participant.sessionId != currentSessionId) {
2126+
val participantSession = if (hasMCU) participant.sessionId else participant.nextcloudSessionId
2127+
if (participantSession != callSession) {
21272128
Log.d(
21282129
TAG,
21292130
" inCallFlag of participant " +
2130-
participant.sessionId!!.substring(0, SESSION_ID_PREFFIX_END) +
2131+
participantSession!!.substring(0, SESSION_ID_PREFFIX_END) +
21312132
" : " +
21322133
inCallFlag
21332134
)

app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ private Participant copyParticipant(Participant participant) {
128128
copiedParticipant.setInternal(participant.getInternal());
129129
copiedParticipant.setLastPing(participant.getLastPing());
130130
copiedParticipant.setSessionId(participant.getSessionId());
131+
copiedParticipant.setNextcloudSessionId(participant.getNextcloudSessionId());
131132
copiedParticipant.setType(participant.getType());
132133
copiedParticipant.setUserId(participant.getUserId());
133134

app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ data class Participant(
5353
@JsonField(name = ["sessionId"])
5454
var sessionId: String? = null,
5555

56+
@JsonField(name = ["nextcloudSessionId"])
57+
var nextcloudSessionId: String? = null,
58+
5659
@JsonField(name = ["sessionIds"])
5760
var sessionIds: ArrayList<String> = ArrayList(0),
5861

@@ -80,7 +83,7 @@ data class Participant(
8083
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
8184
constructor() : this(
8285
null, null, null, null, null, null, null, null, null,
83-
0, null, ArrayList(0), 0, 0, null,
86+
0, null, null, ArrayList(0), 0, 0, null,
8487
null, null
8588
)
8689

app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ private Participant getParticipantFromMessageMap(Map<String, Object> participant
493493
participant.setInCall(Long.parseLong(participantMap.get("inCall").toString()));
494494
participant.setLastPing(Long.parseLong(participantMap.get("lastPing").toString()));
495495
participant.setSessionId(participantMap.get("sessionId").toString());
496+
participant.setNextcloudSessionId(participantMap.get("nextcloudSessionId").toString());
496497

497498
if (participantMap.get("userId") != null && !participantMap.get("userId").toString().isEmpty()) {
498499
participant.setUserId(participantMap.get("userId").toString());

0 commit comments

Comments
 (0)