From 986f459694ec15a330b75deb60179db89b2dd87f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 28 Aug 2024 08:32:37 +0200 Subject: [PATCH] Show proper avatar for federated users in calls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- .../nextcloud/talk/activities/CallActivity.kt | 2 ++ .../talk/adapters/ParticipantDisplayItem.java | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt index 98916daa96..0f3db1b274 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt @@ -2517,10 +2517,12 @@ class CallActivity : CallBaseActivity() { } val defaultGuestNick = resources.getString(R.string.nc_nick_guest) val participantDisplayItem = ParticipantDisplayItem( + context, baseUrl, defaultGuestNick, rootEglBase, videoStreamType, + roomToken, callParticipantModel ) val sessionId = callParticipantModel.sessionId diff --git a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantDisplayItem.java b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantDisplayItem.java index 059e169de7..b4bc87c568 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/ParticipantDisplayItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/ParticipantDisplayItem.java @@ -8,6 +8,7 @@ */ package com.nextcloud.talk.adapters; +import android.content.Context; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; @@ -16,6 +17,7 @@ import com.nextcloud.talk.call.RaisedHand; import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.DisplayUtils; import org.webrtc.EglBase; import org.webrtc.MediaStream; @@ -30,6 +32,8 @@ public class ParticipantDisplayItem { private final ParticipantDisplayItemNotifier participantDisplayItemNotifier = new ParticipantDisplayItemNotifier(); + private final Context context; + private final String baseUrl; private final String defaultGuestNick; private final EglBase rootEglBase; @@ -37,6 +41,8 @@ public class ParticipantDisplayItem { private final String session; private final String streamType; + private final String roomToken; + private final CallParticipantModel callParticipantModel; private Participant.ActorType actorType; @@ -65,8 +71,10 @@ public void onReaction(String reaction) { } }; - public ParticipantDisplayItem(String baseUrl, String defaultGuestNick, EglBase rootEglBase, String streamType, - CallParticipantModel callParticipantModel) { + public ParticipantDisplayItem(Context context, String baseUrl, String defaultGuestNick, EglBase rootEglBase, + String streamType, String roomToken, CallParticipantModel callParticipantModel) { + this.context = context; + this.baseUrl = baseUrl; this.defaultGuestNick = defaultGuestNick; this.rootEglBase = rootEglBase; @@ -74,6 +82,8 @@ public ParticipantDisplayItem(String baseUrl, String defaultGuestNick, EglBase r this.session = callParticipantModel.getSessionId(); this.streamType = streamType; + this.roomToken = roomToken; + this.callParticipantModel = callParticipantModel; this.callParticipantModel.addObserver(callParticipantModelObserver, handler); @@ -112,7 +122,10 @@ private void updateFromModel() { } private void updateUrlForAvatar() { - if (!TextUtils.isEmpty(userId)) { + if (actorType == Participant.ActorType.FEDERATED) { + int darkTheme = DisplayUtils.INSTANCE.isDarkModeOn(context) ? 1 : 0; + urlForAvatar = ApiUtils.getUrlForFederatedAvatar(baseUrl, roomToken, actorId, darkTheme, true); + } else if (!TextUtils.isEmpty(userId)) { urlForAvatar = ApiUtils.getUrlForAvatar(baseUrl, userId, true); } else { urlForAvatar = ApiUtils.getUrlForGuestAvatar(baseUrl, getNick(), true);