mirror of
https://github.com/nextcloud/talk-android
synced 2025-02-03 05:03:04 +00:00
WIP: show conversation avatar
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
60534aca61
commit
c3b468118a
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ public class ParticipantItem extends AbstractFlexibleItem<ParticipantItem.Partic
|
||||
"groups".equals(participant.getSource()) ||
|
||||
participant.getCalculatedActorType() == Participant.ActorType.CIRCLES ||
|
||||
"circles".equals(participant.getSource())) {
|
||||
ImageViewExtensionsKt.loadGroupCallAvatar(holder.binding.avatarView, viewThemeUtils);
|
||||
ImageViewExtensionsKt.loadDefaultGroupCallAvatar(holder.binding.avatarView, viewThemeUtils);
|
||||
} else if (participant.getCalculatedActorType() == Participant.ActorType.EMAILS) {
|
||||
ImageViewExtensionsKt.loadMailAvatar(holder.binding.avatarView, viewThemeUtils);
|
||||
} else if (participant.getCalculatedActorType() == Participant.ActorType.GUESTS ||
|
||||
|
@ -61,8 +61,8 @@ import com.nextcloud.talk.data.user.model.User
|
||||
import com.nextcloud.talk.databinding.ControllerConversationInfoBinding
|
||||
import com.nextcloud.talk.events.EventStatus
|
||||
import com.nextcloud.talk.extensions.loadAvatar
|
||||
import com.nextcloud.talk.extensions.loadGroupCallAvatar
|
||||
import com.nextcloud.talk.extensions.loadPublicCallAvatar
|
||||
import com.nextcloud.talk.extensions.loadDefaultGroupCallAvatar
|
||||
import com.nextcloud.talk.extensions.loadDefaultPublicCallAvatar
|
||||
import com.nextcloud.talk.extensions.loadSystemAvatar
|
||||
import com.nextcloud.talk.jobs.DeleteConversationWorker
|
||||
import com.nextcloud.talk.jobs.LeaveConversationWorker
|
||||
@ -763,10 +763,10 @@ class ConversationInfoActivity :
|
||||
conversation!!.name?.let { binding?.avatarImage?.loadAvatar(conversationUser!!, it) }
|
||||
}
|
||||
Conversation.ConversationType.ROOM_GROUP_CALL -> {
|
||||
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()
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user