From f9fdb387a554e90fdb64d4a7cb1449af2a987e4f Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 17 Mar 2023 15:17:55 +0100 Subject: [PATCH] Hide call recording participant Signed-off-by: Marcel Hibbe --- .../java/com/nextcloud/talk/activities/CallActivity.java | 8 ++++++++ .../java/com/nextcloud/talk/call/CallParticipant.java | 4 ++++ .../java/com/nextcloud/talk/call/CallParticipantList.java | 1 + .../com/nextcloud/talk/call/CallParticipantModel.java | 8 ++++++++ .../nextcloud/talk/call/MutableCallParticipantModel.java | 4 ++++ .../talk/models/json/participants/Participant.kt | 6 ++++-- .../talk/signaling/SignalingMessageReceiver.java | 5 +++++ 7 files changed, 34 insertions(+), 2 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 17b359e5a..978030f92 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -2081,6 +2081,10 @@ public class CallActivity extends CallBaseActivity { callParticipants.get(sessionId).setUserId(userId); } + if (participant.getInternal() != null) { + callParticipants.get(sessionId).setInternal(participant.getInternal()); + } + String nick; if (hasExternalSignalingServer) { nick = webSocketClient.getDisplayNameForSession(sessionId); @@ -2440,6 +2444,10 @@ public class CallActivity extends CallBaseActivity { } private void addParticipantDisplayItem(CallParticipantModel callParticipantModel, String videoStreamType) { + if (callParticipantModel.isInternal() != null && callParticipantModel.isInternal()) { + return; + } + String defaultGuestNick = getResources().getString(R.string.nc_nick_guest); ParticipantDisplayItem participantDisplayItem = new ParticipantDisplayItem(baseUrl, diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java index 20d03fe05..d3e202a0c 100644 --- a/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java +++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java @@ -148,6 +148,10 @@ public class CallParticipant { callParticipantModel.setNick(nick); } + public void setInternal(Boolean internal) { + callParticipantModel.setInternal(internal); + } + public void setPeerConnectionWrapper(PeerConnectionWrapper peerConnectionWrapper) { if (this.peerConnectionWrapper != null) { this.peerConnectionWrapper.removeObserver(peerConnectionObserver); diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java index 6135ab991..34ddc2fb5 100644 --- a/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java +++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java @@ -132,6 +132,7 @@ public class CallParticipantList { private Participant copyParticipant(Participant participant) { Participant copiedParticipant = new Participant(); copiedParticipant.setInCall(participant.getInCall()); + copiedParticipant.setInternal(participant.getInternal()); copiedParticipant.setLastPing(participant.getLastPing()); copiedParticipant.setSessionId(participant.getSessionId()); copiedParticipant.setType(participant.getType()); diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java index 24d8b3ffd..c8b1491d9 100644 --- a/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java +++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java @@ -75,6 +75,8 @@ public class CallParticipantModel { protected Data userId; protected Data nick; + protected Data internal; + protected Data raisedHand; protected Data iceConnectionState; @@ -91,6 +93,8 @@ public class CallParticipantModel { this.userId = new Data<>(); this.nick = new Data<>(); + this.internal = new Data<>(); + this.raisedHand = new Data<>(); this.iceConnectionState = new Data<>(); @@ -114,6 +118,10 @@ public class CallParticipantModel { return nick.getValue(); } + public Boolean isInternal() { + return internal.getValue(); + } + public RaisedHand getRaisedHand() { return raisedHand.getValue(); } diff --git a/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java b/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java index a70f76c85..2772b0030 100644 --- a/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java +++ b/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java @@ -41,6 +41,10 @@ public class MutableCallParticipantModel extends CallParticipantModel { this.nick.setValue(nick); } + public void setInternal(Boolean internal) { + this.internal.setValue(internal); + } + public void setRaisedHand(boolean state, long timestamp) { this.raisedHand.setValue(new RaisedHand(state, timestamp)); } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt index ba79acc6b..3b085025b 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt @@ -27,7 +27,6 @@ import com.bluelinelabs.logansquare.annotation.JsonObject import com.nextcloud.talk.models.json.converters.EnumActorTypeConverter import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter import kotlinx.parcelize.Parcelize -import java.util.ArrayList @Parcelize @JsonObject @@ -48,6 +47,9 @@ data class Participant( @JsonField(name = ["userId"]) var userId: String? = null, + @JsonField(name = ["internal"]) + var internal: Boolean? = null, + @JsonField(name = ["type", "participantType"], typeConverter = EnumParticipantTypeConverter::class) var type: ParticipantType? = null, @@ -90,7 +92,7 @@ data class Participant( ) : Parcelable { // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject' constructor() : this( - null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, 0, null, ArrayList(0), 0, 0, null, null, null ) diff --git a/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java b/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java index a8e201817..ad18751a8 100644 --- a/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java +++ b/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java @@ -389,6 +389,7 @@ public abstract class SignalingMessageReceiver { // "participantType": #INTEGER#, // "userId": #STRING#, // Optional // "nextcloudSessionId": #STRING#, // Optional + // "internal": #BOOLEAN#, // Optional // "participantPermissions": #INTEGER#, // Talk >= 13 // }, // ... @@ -480,6 +481,10 @@ public abstract class SignalingMessageReceiver { participant.setUserId(participantMap.get("userId").toString()); } + if (participantMap.get("internal") != null && Boolean.parseBoolean(participantMap.get("internal").toString())) { + participant.setInternal(Boolean.TRUE); + } + // Only in external signaling messages if (participantMap.get("participantType") != null) { int participantTypeInt = Integer.parseInt(participantMap.get("participantType").toString());