pass "replace" as parameter to load*Avatar methods

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2023-04-26 11:30:14 +02:00
parent 5a56d8c614
commit 076b9b2aef
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
15 changed files with 52 additions and 65 deletions

View File

@ -39,7 +39,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.CallNotificationActivityBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.conversations.RoomOverall
import com.nextcloud.talk.models.json.participants.Participant
@ -249,7 +249,7 @@ class CallNotificationActivity : CallBaseActivity() {
private fun setUpAfterConversationIsKnown() {
binding!!.conversationNameTextView.text = currentConversation!!.displayName
if (currentConversation!!.type === Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
binding!!.avatarImageView.loadAvatar(userBeingCalled!!, currentConversation!!.name!!)
binding!!.avatarImageView.loadUserAvatar(userBeingCalled!!, currentConversation!!.name!!, true, false)
} else {
binding!!.avatarImageView.setImageResource(R.drawable.ic_circular_group)
}

View File

@ -26,8 +26,8 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ReactionItemBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadGuestAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.json.reactions.ReactionVoter
class ReactionsViewHolder(
@ -53,9 +53,10 @@ class ReactionsViewHolder(
}
binding.avatar.loadGuestAvatar(user!!.baseUrl!!, displayName!!, false)
} else if (reactionItem.reactionVoter.actorType == ReactionVoter.ReactionActorType.USERS) {
binding.avatar.loadAvatar(
binding.avatar.loadUserAvatar(
user!!,
reactionItem.reactionVoter.actorId!!,
false,
false
)
}

View File

@ -128,7 +128,8 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
if (user != null &&
user.getBaseUrl() != null &&
(user.getBaseUrl().startsWith("http://") || user.getBaseUrl().startsWith("https://"))) {
ImageViewExtensionsKt.loadAvatar(holder.binding.userIcon, user, participant.getCalculatedActorId(), true);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.userIcon, user, participant.getCalculatedActorId(),
true, false);
}
}

View File

@ -181,10 +181,11 @@ public class ContactItem extends AbstractFlexibleItem<ContactItem.ContactItemVie
displayName = "Guest";
}
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView, user, displayName, true);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView, user, displayName, true, false);
} else if (participant.getCalculatedActorType() == Participant.ActorType.USERS ||
PARTICIPANT_SOURCE_USERS.equals(participant.getSource())) {
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView, user, participant.getCalculatedActorId(), true);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView, user, participant.getCalculatedActorId(),
true, false);
}
}
@ -203,7 +204,7 @@ public class ContactItem extends AbstractFlexibleItem<ContactItem.ContactItemVie
avatar = fallbackImageResource;
}
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView, avatar);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView, avatar);
}
@Override

View File

@ -40,9 +40,9 @@ import com.nextcloud.talk.adapters.items.ConversationItem.ConversationItemViewHo
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
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.loadConversationAvatar
import com.nextcloud.talk.extensions.loadSystemAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.conversations.Conversation.ConversationType
@ -170,7 +170,7 @@ class ConversationItem(
when (model.type) {
ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL -> {
if (!TextUtils.isEmpty(model.name)) {
holder.binding.dialogAvatar.loadAvatar(user, model.name!!)
holder.binding.dialogAvatar.loadUserAvatar(user, model.name!!, true, false)
} else {
holder.binding.dialogAvatar.visibility = View.GONE
}
@ -179,7 +179,7 @@ class ConversationItem(
ConversationType.ROOM_GROUP_CALL,
ConversationType.FORMER_ONE_TO_ONE,
ConversationType.ROOM_PUBLIC_CALL ->
holder.binding.dialogAvatar.loadConversationAvatar(user, model)
holder.binding.dialogAvatar.loadConversationAvatar(user, model, true)
else -> holder.binding.dialogAvatar.visibility = View.GONE
}
@ -202,14 +202,14 @@ class ConversationItem(
Conversation.ObjectType.FILE -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
holder.binding.dialogAvatar.loadAvatar(
holder.binding.dialogAvatar.loadUserAvatar(
viewThemeUtils.talk.themePlaceholderAvatar(
holder.binding.dialogAvatar,
R.drawable.ic_avatar_document
)
)
} else {
holder.binding.dialogAvatar.loadAvatar(
holder.binding.dialogAvatar.loadUserAvatar(
R.drawable.ic_circular_document
)
}

View File

@ -157,22 +157,22 @@ public class MentionAutocompleteItem extends AbstractFlexibleItem<ParticipantIte
if (SOURCE_CALLS.equals(source) || SOURCE_GROUPS.equals(source)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ImageViewExtensionsKt.loadAvatar(
ImageViewExtensionsKt.loadUserAvatar(
holder.binding.avatarView,
viewThemeUtils.talk.themePlaceholderAvatar(
holder.binding.avatarView,
R.drawable.ic_avatar_group
)
);
);
} else {
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView, R.drawable.ic_circular_group);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView, R.drawable.ic_circular_group);
}
} else {
String avatarId = objectId;
if (SOURCE_GUESTS.equals(source)) {
avatarId = displayName;
}
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView, currentUser, avatarId, true);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView, currentUser, avatarId, true, false);
}
drawStatus(holder);

View File

@ -168,10 +168,10 @@ public class ParticipantItem extends AbstractFlexibleItem<ParticipantItem.Partic
} else if (participant.getCalculatedActorType() == Participant.ActorType.USERS ||
"users".equals(participant.getSource())) {
ImageViewExtensionsKt.loadAvatar(holder.binding.avatarView,
user,
participant.getCalculatedActorId(),
true);
ImageViewExtensionsKt.loadUserAvatar(holder.binding.avatarView,
user,
participant.getCalculatedActorId(),
true, false);
}
Resources resources = NextcloudTalkApplication.Companion.getSharedApplication().getResources();

View File

@ -62,9 +62,9 @@ import com.nextcloud.talk.controllers.bottomsheet.items.listItemsWithImage
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityConversationInfoBinding
import com.nextcloud.talk.events.EventStatus
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadConversationAvatar
import com.nextcloud.talk.extensions.loadSystemAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.jobs.DeleteConversationWorker
import com.nextcloud.talk.jobs.LeaveConversationWorker
import com.nextcloud.talk.models.json.conversations.Conversation
@ -800,11 +800,11 @@ class ConversationInfoActivity :
private fun loadConversationAvatar() {
when (conversation!!.type) {
Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL -> if (!TextUtils.isEmpty(conversation!!.name)) {
conversation!!.name?.let { binding.avatarImage.loadAvatar(conversationUser, it) }
conversation!!.name?.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) }
}
Conversation.ConversationType.ROOM_GROUP_CALL, Conversation.ConversationType.ROOM_PUBLIC_CALL -> {
binding.avatarImage.loadConversationAvatar(conversationUser, conversation!!)
binding.avatarImage.loadConversationAvatar(conversationUser, conversation!!, false)
}
Conversation.ConversationType.ROOM_SYSTEM -> {

View File

@ -39,9 +39,9 @@ import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityConversationInfoEditBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadConversationAvatar
import com.nextcloud.talk.extensions.loadSystemAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.generic.GenericOverall
import com.nextcloud.talk.repositories.conversations.ConversationsRepository
@ -352,11 +352,11 @@ class ConversationInfoEditActivity :
private fun loadConversationAvatar() {
when (conversation!!.type) {
Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL -> if (!TextUtils.isEmpty(conversation!!.name)) {
conversation!!.name?.let { binding.avatarImage.loadAvatar(conversationUser, it) }
conversation!!.name?.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) }
}
Conversation.ConversationType.ROOM_GROUP_CALL, Conversation.ConversationType.ROOM_PUBLIC_CALL -> {
binding.avatarImage.loadConversationAvatar(conversationUser, conversation!!)
binding.avatarImage.loadConversationAvatar(conversationUser, conversation!!, true)
}
Conversation.ConversationType.ROOM_SYSTEM -> {

View File

@ -51,7 +51,8 @@ private const val TAG = "ImageViewExtensions"
fun ImageView.loadConversationAvatar(
user: User,
conversation: Conversation
conversation: Conversation,
replace: Boolean
): io.reactivex.disposables
.Disposable {
val imageRequestUri = ApiUtils.getUrlForConversationAvatar(
@ -73,37 +74,23 @@ fun ImageView.loadConversationAvatar(
else -> ContextCompat.getDrawable(context, R.drawable.account_circle_96dp)
}
return loadAvatarInternal(user, imageRequestUri, false, placeholder)
return loadAvatarInternal(user, imageRequestUri, replace, placeholder)
}
fun ImageView.loadAvatar(
fun ImageView.loadUserAvatar(
user: User,
avatar: String,
requestBigSize: Boolean = true
avatarId: String,
requestBigSize: Boolean = true,
replace: Boolean
): io.reactivex.disposables
.Disposable {
val imageRequestUri = ApiUtils.getUrlForAvatar(
user.baseUrl,
avatar,
avatarId,
requestBigSize
)
return loadAvatarInternal(user, imageRequestUri, false, null)
}
fun ImageView.replaceAvatar(
user: User,
avatar: String,
requestBigSize: Boolean = true
): io.reactivex.disposables
.Disposable {
val imageRequestUri = ApiUtils.getUrlForAvatar(
user.baseUrl,
avatar,
requestBigSize
)
return loadAvatarInternal(user, imageRequestUri, true, null)
return loadAvatarInternal(user, imageRequestUri, replace, null)
}
@OptIn(ExperimentalCoilApi::class)
@ -218,7 +205,7 @@ fun ImageView.loadAvatarOrImagePreview(url: String, user: User, placeholder: Dra
}
}
fun ImageView.loadAvatar(any: Any?): io.reactivex.disposables.Disposable {
fun ImageView.loadUserAvatar(any: Any?): io.reactivex.disposables.Disposable {
return DisposableWrapper(
load(any) {
transformations(CircleCropTransformation())
@ -249,7 +236,7 @@ fun ImageView.loadChangelogBotAvatar(): io.reactivex.disposables.Disposable {
}
fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable {
return loadAvatar(
return loadUserAvatar(
TextDrawable.builder()
.beginConfig()
.bold()
@ -267,7 +254,7 @@ fun ImageView.loadDefaultGroupCallAvatar(viewThemeUtils: ViewThemeUtils): io.rea
} else {
R.drawable.ic_circular_group
}
return loadAvatar(data)
return loadUserAvatar(data)
}
fun ImageView.loadMailAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable {
@ -276,7 +263,7 @@ fun ImageView.loadMailAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.dispo
} else {
R.drawable.ic_circular_mail
}
return loadAvatar(data)
return loadUserAvatar(data)
}
fun ImageView.loadGuestAvatar(user: User, name: String, big: Boolean): io.reactivex.disposables.Disposable {

View File

@ -27,8 +27,8 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.PollResultVoterItemBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadGuestAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.polls.model.PollDetails
import com.nextcloud.talk.ui.theme.ViewThemeUtils
@ -57,7 +57,7 @@ class PollResultVoterViewHolder(
}
avatar.loadGuestAvatar(user, displayName!!, false)
} else if (pollDetail.actorType == "users") {
avatar.loadAvatar(user, pollDetail.actorId!!, false)
avatar.loadUserAvatar(user, pollDetail.actorId!!, false, false)
}
}
}

View File

@ -31,8 +31,8 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.PollResultVotersOverviewItemBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadGuestAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.polls.model.PollDetails
class PollResultVotersOverviewViewHolder(
@ -88,7 +88,7 @@ class PollResultVotersOverviewViewHolder(
}
avatar.loadGuestAvatar(user, displayName!!, false)
} else if (pollDetail.actorType == "users") {
avatar.loadAvatar(user, pollDetail.actorId!!, false)
avatar.loadUserAvatar(user, pollDetail.actorId!!, false, false)
}
}

View File

@ -136,7 +136,8 @@ public class ChooseAccountDialogFragment extends DialogFragment {
if (user.getBaseUrl() != null &&
(user.getBaseUrl().startsWith("http://") || user.getBaseUrl().startsWith("https://"))) {
binding.currentAccount.userIcon.setVisibility(View.VISIBLE);
ImageViewExtensionsKt.loadAvatar(binding.currentAccount.userIcon, user, user.getUserId(), true);
ImageViewExtensionsKt.loadUserAvatar(binding.currentAccount.userIcon, user, user.getUserId(), true,
false);
} else {
binding.currentAccount.userIcon.setVisibility(View.INVISIBLE);
}

View File

@ -40,7 +40,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.DialogChooseAccountShareToBinding
import com.nextcloud.talk.extensions.loadAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.json.participants.Participant
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.users.UserManager
@ -95,7 +95,7 @@ class ChooseAccountShareToDialogFragment : DialogFragment() {
if (user.baseUrl != null &&
(user.baseUrl!!.startsWith("http://") || user.baseUrl!!.startsWith("https://"))
) {
binding!!.currentAccount.userIcon.loadAvatar(user, user.userId!!)
binding!!.currentAccount.userIcon.loadUserAvatar(user, user.userId!!, true, false)
} else {
binding!!.currentAccount.userIcon.visibility = View.INVISIBLE
}

View File

@ -468,11 +468,7 @@ public class DisplayUtils {
}
if (avatarId != null) {
if (deleteCache) {
ImageViewExtensionsKt.replaceAvatar(avatarImageView, user, avatarId, true);
} else {
ImageViewExtensionsKt.loadAvatar(avatarImageView, user, avatarId, true);
}
ImageViewExtensionsKt.loadUserAvatar(avatarImageView, user, avatarId, true, deleteCache);
}
}
}