diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt index 069464cb0..3660fee4f 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt @@ -41,8 +41,9 @@ import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedA import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.databinding.RvItemConversationWithLastMessageBinding import com.nextcloud.talk.extensions.loadAvatar -import com.nextcloud.talk.extensions.loadGroupCallAvatar -import com.nextcloud.talk.extensions.loadPublicCallAvatar +import com.nextcloud.talk.extensions.loadConversationAvatar +import com.nextcloud.talk.extensions.loadDefaultGroupCallAvatar +import com.nextcloud.talk.extensions.loadDefaultPublicCallAvatar import com.nextcloud.talk.extensions.loadSystemAvatar import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.conversations.Conversation @@ -169,17 +170,24 @@ class ConversationItem( } if (shouldLoadAvatar) { when (model.type) { - ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL -> if (!TextUtils.isEmpty(model.name)) { - holder.binding.dialogAvatar.loadAvatar(user, model.name!!) - } else { - holder.binding.dialogAvatar.visibility = View.GONE + ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL -> { + if (!TextUtils.isEmpty(model.name)) { + holder.binding.dialogAvatar.loadAvatar(user, model.name!!) + } else { + holder.binding.dialogAvatar.visibility = View.GONE + } } + ConversationType.ROOM_GROUP_CALL -> - holder.binding.dialogAvatar.loadGroupCallAvatar(viewThemeUtils) + // holder.binding.dialogAvatar.loadDefaultGroupCallAvatar(viewThemeUtils) + holder.binding.dialogAvatar.loadConversationAvatar(user, model.token!!) + ConversationType.FORMER_ONE_TO_ONE -> - holder.binding.dialogAvatar.loadGroupCallAvatar(viewThemeUtils) + holder.binding.dialogAvatar.loadDefaultGroupCallAvatar(viewThemeUtils) + ConversationType.ROOM_PUBLIC_CALL -> - holder.binding.dialogAvatar.loadPublicCallAvatar(viewThemeUtils) + holder.binding.dialogAvatar.loadDefaultPublicCallAvatar(viewThemeUtils) + else -> holder.binding.dialogAvatar.visibility = View.GONE } } @@ -198,6 +206,7 @@ class ConversationItem( ) false } + Conversation.ObjectType.FILE -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { holder.binding.dialogAvatar.loadAvatar( @@ -213,6 +222,7 @@ class ConversationItem( } false } + else -> true } } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.java index 2eb6a22df..532c0f8ee 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.java @@ -147,7 +147,7 @@ public class ParticipantItem extends AbstractFlexibleItem { - binding?.avatarImage?.loadGroupCallAvatar(viewThemeUtils) + binding?.avatarImage?.loadDefaultGroupCallAvatar(viewThemeUtils) } Conversation.ConversationType.ROOM_PUBLIC_CALL -> { - binding?.avatarImage?.loadPublicCallAvatar(viewThemeUtils) + binding?.avatarImage?.loadDefaultPublicCallAvatar(viewThemeUtils) } Conversation.ConversationType.ROOM_SYSTEM -> { binding?.avatarImage?.loadSystemAvatar() diff --git a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt index 41fc5b024..241ca8d23 100644 --- a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt +++ b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt @@ -47,6 +47,20 @@ import com.nextcloud.talk.utils.ApiUtils private const val ROUNDING_PIXEL = 16f private const val TAG = "ImageViewExtensions" +fun ImageView.loadConversationAvatar( + user: User, + roomToken: String +): io.reactivex.disposables +.Disposable { + val imageRequestUri = ApiUtils.getUrlForConversationAvatar( + 1, + user.baseUrl, + roomToken + ) + + return loadAvatarInternal(user, imageRequestUri, false) +} + fun ImageView.loadAvatar( user: User, avatar: String, @@ -223,7 +237,7 @@ fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable { ) } -fun ImageView.loadGroupCallAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable { +fun ImageView.loadDefaultGroupCallAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable { val data: Any = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { viewThemeUtils.talk.themePlaceholderAvatar(this, R.drawable.ic_avatar_group) as Any } else { @@ -232,7 +246,7 @@ fun ImageView.loadGroupCallAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex. return loadAvatar(data) } -fun ImageView.loadPublicCallAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable { +fun ImageView.loadDefaultPublicCallAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable { val data: Any = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { viewThemeUtils.talk.themePlaceholderAvatar(this, R.drawable.ic_avatar_link) as Any } else { diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java index e649b1a3b..5f20286f1 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -375,6 +375,10 @@ public class ApiUtils { return baseUrl + "/index.php/avatar/guest/" + Uri.encode(name) + "/" + avatarSize; } + public static String getUrlForConversationAvatar(int version, String baseUrl, String token) { + return getUrlForRoom(version, baseUrl, token) + "/avatar"; + } + public static String getCredentials(String username, String token) { if (TextUtils.isEmpty(username) && TextUtils.isEmpty(token)) { return null;