From bc0eee5c1e02a30ac783b719401046737d946efd Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Thu, 21 Dec 2023 16:07:33 +0200 Subject: [PATCH] Use jdenticon for user profile placeholder --- .../feature/circles/list/CirclesViewHolder.kt | 6 +++--- .../feature/groups/list/GroupViewHolder.kt | 6 +++--- .../feature/people/list/PeopleViewHolder.kt | 5 ++--- .../feature/people/user/UserDialogFragment.kt | 6 +++--- .../people/user/list/UsersCircleViewHolder.kt | 4 ++-- .../room/select/list/SelectRoomsViewHolder.kt | 4 ++-- .../well_known/RoomWellKnownDialogFragment.kt | 4 ++-- .../feature/settings/SettingsFragment.kt | 4 ++-- .../org/futo/circles/view/CreatePostView.kt | 5 ++--- .../circles/view/PeopleTabUserListItemView.kt | 6 +++--- .../org/futo/circles/view/PostHeaderView.kt | 4 ++-- .../switch_user/list/SwitchUsersViewHolder.kt | 7 ++++--- .../profile/edit/EditProfileDialogFragment.kt | 9 ++++----- core/build.gradle | 4 ++++ .../core/extensions/ImageViewExtensions.kt | 18 +++++++++++++++++- .../gallery/rooms/list/GalleryViewHolder.kt | 4 ++-- .../following/list/FollowingViewHolder.kt | 4 ++-- .../circle/UpdateCircleDialogFragment.kt | 4 ++-- .../gallery/UpdateGalleryDialogFragment.kt | 4 ++-- .../update/group/UpdateGroupDialogFragment.kt | 4 ++-- .../options/TimelineOptionsDialogFragment.kt | 4 ++-- .../futo/circles/core/view/UserListItemView.kt | 6 +++--- .../select/list/SelectGalleryViewHolder.kt | 4 ++-- 23 files changed, 72 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/org/futo/circles/feature/circles/list/CirclesViewHolder.kt b/app/src/main/java/org/futo/circles/feature/circles/list/CirclesViewHolder.kt index c5ac09278..e5b172b70 100644 --- a/app/src/main/java/org/futo/circles/feature/circles/list/CirclesViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/circles/list/CirclesViewHolder.kt @@ -8,7 +8,7 @@ import org.futo.circles.R import org.futo.circles.core.base.list.ViewBindingHolder import org.futo.circles.core.base.list.context import org.futo.circles.core.databinding.ListItemInviteHeaderBinding -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.databinding.ListItemInvitedCircleBinding @@ -45,7 +45,7 @@ class JoinedCircleViewHolder( if (data !is JoinedCircleListItem) return with(binding) { - ivCircle.loadProfileIcon(data.info.avatarUrl, data.info.title) + ivCircle.loadRoomProfileIcon(data.info.avatarUrl, data.info.title) setTitle(tvCircleTitle, data.info.title) setFollowingCount(data.followingCount) setFollowedByCount(data.followedByCount) @@ -103,7 +103,7 @@ class InvitedCircleViewHolder( with(binding) { tvShowProfileImage.setIsVisible(data.shouldBlurIcon) - ivCircle.loadProfileIcon( + ivCircle.loadRoomProfileIcon( data.info.avatarUrl, data.info.title, applyBlur = data.shouldBlurIcon diff --git a/app/src/main/java/org/futo/circles/feature/groups/list/GroupViewHolder.kt b/app/src/main/java/org/futo/circles/feature/groups/list/GroupViewHolder.kt index 7dfef1833..60e8163cc 100644 --- a/app/src/main/java/org/futo/circles/feature/groups/list/GroupViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/groups/list/GroupViewHolder.kt @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView import org.futo.circles.R import org.futo.circles.core.base.list.ViewBindingHolder import org.futo.circles.core.base.list.context -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.databinding.ListItemInvitedGroupBinding @@ -49,7 +49,7 @@ class JoinedGroupViewHolder( override fun bind(data: GroupListItem) { if (data !is JoinedGroupListItem) return - binding.ivGroup.loadProfileIcon(data.info.avatarUrl, data.info.title) + binding.ivGroup.loadRoomProfileIcon(data.info.avatarUrl, data.info.title) setIsEncrypted(binding.ivLock, data.isEncrypted) setTitle(binding.tvGroupTitle, data.info.title) setTopic(data.topic) @@ -122,7 +122,7 @@ class InvitedGroupViewHolder( if (data !is InvitedGroupListItem) return with(binding) { - ivGroup.loadProfileIcon( + ivGroup.loadRoomProfileIcon( data.info.avatarUrl, data.info.title, applyBlur = data.shouldBlurIcon diff --git a/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt b/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt index 3103bbda4..86e19d4a4 100644 --- a/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt @@ -6,12 +6,11 @@ import androidx.recyclerview.widget.RecyclerView import org.futo.circles.core.base.list.ViewBindingHolder import org.futo.circles.core.base.list.context import org.futo.circles.core.databinding.ListItemInviteHeaderBinding -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.model.CirclesUserSummary import org.futo.circles.databinding.ListItemPeopleDefaultBinding -import org.futo.circles.databinding.ListItemPeopleIgnoredBinding import org.futo.circles.databinding.ListItemPeopleRequestBinding import org.futo.circles.model.PeopleHeaderItem import org.futo.circles.model.PeopleListItem @@ -76,7 +75,7 @@ class PeopleRequestUserViewHolder( private fun bindUser(user: CirclesUserSummary) { with(binding) { tvUserName.text = user.name - ivUserImage.loadProfileIcon(user.avatarUrl, user.name) + ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id) } } } diff --git a/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt index 6cd31da3f..fcbd792f1 100644 --- a/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt @@ -9,7 +9,8 @@ import androidx.recyclerview.widget.DividerItemDecoration import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.R import org.futo.circles.core.base.NetworkObserver -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.notEmptyDisplayName import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse @@ -19,7 +20,6 @@ import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.extensions.showNoInternetConnection import org.futo.circles.core.extensions.showSuccess import org.futo.circles.core.extensions.withConfirmation -import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment import org.futo.circles.databinding.DialogFragmentUserBinding import org.futo.circles.extensions.* import org.futo.circles.feature.people.user.list.UsersCirclesAdapter @@ -133,7 +133,7 @@ class UserDialogFragment : BaseFullscreenDialogFragment(DialogFragmentUserBindin toolbar.title = user.notEmptyDisplayName() tvUserId.text = user.userId tvUserName.text = user.notEmptyDisplayName() - ivUser.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName()) + ivUser.loadUserProfileIcon(user.avatarUrl, user.userId) tvEmptyCirclesList.text = getString(R.string.not_following_any_circles_format, user.notEmptyDisplayName()) } diff --git a/app/src/main/java/org/futo/circles/feature/people/user/list/UsersCircleViewHolder.kt b/app/src/main/java/org/futo/circles/feature/people/user/list/UsersCircleViewHolder.kt index 0d07c545c..d9896b6fc 100644 --- a/app/src/main/java/org/futo/circles/feature/people/user/list/UsersCircleViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/people/user/list/UsersCircleViewHolder.kt @@ -4,7 +4,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import org.futo.circles.core.databinding.ListItemInviteHeaderBinding -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.base.list.ViewBindingHolder @@ -38,7 +38,7 @@ class UsersTimelineRoomViewHolder( if (data !is TimelineRoomListItem) return with(binding) { tvTimelineName.text = data.info.title - ivTimelineImage.loadProfileIcon(data.info.avatarUrl, data.info.title) + ivTimelineImage.loadRoomProfileIcon(data.info.avatarUrl, data.info.title) btnFollow.setIsVisible(!data.isJoined) btnUnFollow.setIsVisible(data.isJoined) } diff --git a/app/src/main/java/org/futo/circles/feature/room/select/list/SelectRoomsViewHolder.kt b/app/src/main/java/org/futo/circles/feature/room/select/list/SelectRoomsViewHolder.kt index 3ce87c665..bbc2df719 100644 --- a/app/src/main/java/org/futo/circles/feature/room/select/list/SelectRoomsViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/room/select/list/SelectRoomsViewHolder.kt @@ -3,7 +3,7 @@ package org.futo.circles.feature.room.select.list import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import org.futo.circles.R -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setSelectableItemBackground import org.futo.circles.core.base.list.ViewBindingHolder @@ -36,7 +36,7 @@ class SelectRoomsViewHolder( binding.ivCircleImage.setImageResource(R.drawable.ic_check_circle) binding.lRoot.setBackgroundColor(context.getColor(R.color.highlight_color)) } else { - binding.ivCircleImage.loadProfileIcon(data.info.avatarUrl, data.info.title) + binding.ivCircleImage.loadRoomProfileIcon(data.info.avatarUrl, data.info.title) binding.lRoot.setSelectableItemBackground() } } diff --git a/app/src/main/java/org/futo/circles/feature/room/well_known/RoomWellKnownDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/room/well_known/RoomWellKnownDialogFragment.kt index e2fa98343..9b9e4ebd2 100644 --- a/app/src/main/java/org/futo/circles/feature/room/well_known/RoomWellKnownDialogFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/room/well_known/RoomWellKnownDialogFragment.kt @@ -9,7 +9,7 @@ import org.futo.circles.R import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment import org.futo.circles.core.extensions.getText import org.futo.circles.core.extensions.gone -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse import org.futo.circles.core.extensions.onBackPressed @@ -76,7 +76,7 @@ class RoomWellKnownDialogFragment : with(binding) { ivCover.apply { if (roomInfo.avatarUrl != null || roomInfo.name != null) - loadProfileIcon(roomInfo.avatarUrl, roomInfo.name ?: "") + loadRoomProfileIcon(roomInfo.avatarUrl, roomInfo.name ?: "") else setImageResource(R.drawable.ic_logo) } tvRoomName.apply { diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt index 97a60a0ed..0956f183b 100644 --- a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt @@ -14,7 +14,7 @@ import org.futo.circles.auth.model.LogOut import org.futo.circles.auth.model.SwitchUser import org.futo.circles.core.base.CirclesAppConfig import org.futo.circles.core.base.NetworkObserver -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.notEmptyDisplayName import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse @@ -130,7 +130,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) { private fun bindProfile(user: User) { with(binding) { - ivProfile.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName()) + ivProfile.loadUserProfileIcon(user.avatarUrl, user.userId) tvUserName.text = user.notEmptyDisplayName() tvUserId.text = user.userId } diff --git a/app/src/main/java/org/futo/circles/view/CreatePostView.kt b/app/src/main/java/org/futo/circles/view/CreatePostView.kt index b6d3f11da..648e41d7e 100644 --- a/app/src/main/java/org/futo/circles/view/CreatePostView.kt +++ b/app/src/main/java/org/futo/circles/view/CreatePostView.kt @@ -8,8 +8,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import org.futo.circles.core.extensions.gone -import org.futo.circles.core.extensions.loadProfileIcon -import org.futo.circles.core.extensions.notEmptyDisplayName +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.extensions.visible import org.futo.circles.databinding.ViewCreatePostBinding @@ -53,7 +52,7 @@ class CreatePostView( } fun setUserInfo(user: User) { - binding.ivProfile.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName()) + binding.ivProfile.loadUserProfileIcon(user.avatarUrl, user.userId) } private fun setupButtons(isThread: Boolean) { diff --git a/app/src/main/java/org/futo/circles/view/PeopleTabUserListItemView.kt b/app/src/main/java/org/futo/circles/view/PeopleTabUserListItemView.kt index 1dad4b9b9..37815325c 100644 --- a/app/src/main/java/org/futo/circles/view/PeopleTabUserListItemView.kt +++ b/app/src/main/java/org/futo/circles/view/PeopleTabUserListItemView.kt @@ -4,9 +4,9 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout -import org.futo.circles.core.extensions.loadProfileIcon -import org.futo.circles.databinding.ViewPeopleTabUserListItemBinding +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.model.CirclesUserSummary +import org.futo.circles.databinding.ViewPeopleTabUserListItemBinding class PeopleTabUserListItemView( context: Context, @@ -19,7 +19,7 @@ class PeopleTabUserListItemView( with(binding) { tvUserName.text = user.name tvUserId.text = user.id - ivUserImage.loadProfileIcon(user.avatarUrl, user.name) + ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id) } } } \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/view/PostHeaderView.kt b/app/src/main/java/org/futo/circles/view/PostHeaderView.kt index b4fd3aaba..c6d3f16bc 100644 --- a/app/src/main/java/org/futo/circles/view/PostHeaderView.kt +++ b/app/src/main/java/org/futo/circles/view/PostHeaderView.kt @@ -7,7 +7,7 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import org.futo.circles.R import org.futo.circles.core.extensions.getAttributes -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.notEmptyDisplayName import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.model.Post @@ -53,7 +53,7 @@ class PostHeaderView( ) { with(binding) { ivSenderImage.apply { - loadProfileIcon(avatarUrl, name) + loadUserProfileIcon(avatarUrl, userId) setOnClickListener { if (userId != MatrixSessionProvider.currentSession?.myUserId) optionsListener?.onUserClicked(userId) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/switch_user/list/SwitchUsersViewHolder.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/switch_user/list/SwitchUsersViewHolder.kt index a7818a834..379ecc277 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/switch_user/list/SwitchUsersViewHolder.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/switch_user/list/SwitchUsersViewHolder.kt @@ -6,7 +6,8 @@ import org.futo.circles.auth.databinding.ListItemSwitchUserBinding import org.futo.circles.core.extensions.notEmptyDisplayName import org.futo.circles.auth.model.SwitchUserListItem import org.futo.circles.core.base.list.ViewBindingHolder -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.onClick class SwitchUsersViewHolder( @@ -26,9 +27,9 @@ class SwitchUsersViewHolder( fun bind(data: SwitchUserListItem) { with(binding) { - ivUserImage.loadProfileIcon( + ivUserImage.loadUserProfileIcon( data.user.avatarUrl, - data.user.notEmptyDisplayName(), + data.user.userId, session = data.session ) tvUserName.text = data.user.notEmptyDisplayName() diff --git a/auth/src/main/java/org/futo/circles/auth/feature/profile/edit/EditProfileDialogFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/profile/edit/EditProfileDialogFragment.kt index a71265aeb..b8564af5e 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/profile/edit/EditProfileDialogFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/profile/edit/EditProfileDialogFragment.kt @@ -8,15 +8,14 @@ import androidx.fragment.app.viewModels import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.auth.R import org.futo.circles.auth.databinding.DialogFragmentEditProfileBinding +import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment +import org.futo.circles.core.base.fragment.HasLoadingState import org.futo.circles.core.extensions.getText -import org.futo.circles.core.extensions.loadProfileIcon -import org.futo.circles.core.extensions.notEmptyDisplayName +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse import org.futo.circles.core.extensions.onBackPressed import org.futo.circles.core.extensions.showSuccess -import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment -import org.futo.circles.core.base.fragment.HasLoadingState import org.futo.circles.core.feature.picker.helper.MediaPickerHelper import org.matrix.android.sdk.api.session.user.model.User @@ -83,7 +82,7 @@ class EditProfileDialogFragment : private fun setInitialUserInfo(user: User) { with(binding) { - ivProfile.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName()) + ivProfile.loadUserProfileIcon(user.avatarUrl, user.userId) tilName.editText?.setText(user.displayName) tilUserId.editText?.setText(user.userId) } diff --git a/core/build.gradle b/core/build.gradle index a4510df61..a0dce0f1b 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -107,6 +107,10 @@ dependencies { //Shake detection implementation 'com.squareup:seismic:1.0.3' + //profile placeholder + implementation 'com.github.WycliffeAssociates:jdenticon-kotlin:1.1' + implementation 'com.caverock:androidsvg-aar:1.4' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' diff --git a/core/src/main/java/org/futo/circles/core/extensions/ImageViewExtensions.kt b/core/src/main/java/org/futo/circles/core/extensions/ImageViewExtensions.kt index 05fed5bff..c00ca63f5 100644 --- a/core/src/main/java/org/futo/circles/core/extensions/ImageViewExtensions.kt +++ b/core/src/main/java/org/futo/circles/core/extensions/ImageViewExtensions.kt @@ -4,10 +4,13 @@ import android.annotation.SuppressLint import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable +import android.graphics.drawable.PictureDrawable import android.util.Size import android.widget.ImageView import com.bumptech.glide.Glide import com.bumptech.glide.request.target.Target +import com.caverock.androidsvg.SVG +import jdenticon.Jdenticon import jp.wasabeef.glide.transformations.BlurTransformation import org.futo.circles.core.feature.blurhash.ThumbHash import org.futo.circles.core.feature.textDrawable.ColorGenerator @@ -52,7 +55,7 @@ fun ImageView.loadEncryptedImage( } ?: loadMatrixImage(content.fileUrl, loadOriginalSize, preferredSize = preferredSize) } -fun ImageView.loadProfileIcon( +fun ImageView.loadRoomProfileIcon( url: String?, userId: String, loadOriginalSize: Boolean = false, @@ -73,6 +76,19 @@ fun ImageView.loadProfileIcon( loadMatrixImage(url, loadOriginalSize, placeholder, preferredSize, session, applyBlur) } +fun ImageView.loadUserProfileIcon( + url: String?, + userId: String, + session: Session? = null +) { + post { + val svgString = Jdenticon.toSvg(userId, measuredWidth) + val svg = SVG.getFromString(svgString) + val placeholder = PictureDrawable(svg.renderToPicture()) + loadMatrixImage(url, placeholder = placeholder, session = session) + } +} + @SuppressLint("CheckResult") fun ImageView.loadMatrixImage( diff --git a/core/src/main/java/org/futo/circles/core/feature/picker/gallery/rooms/list/GalleryViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/picker/gallery/rooms/list/GalleryViewHolder.kt index 8a99eaf46..78a8465f2 100644 --- a/core/src/main/java/org/futo/circles/core/feature/picker/gallery/rooms/list/GalleryViewHolder.kt +++ b/core/src/main/java/org/futo/circles/core/feature/picker/gallery/rooms/list/GalleryViewHolder.kt @@ -9,7 +9,7 @@ import org.futo.circles.core.base.list.context import org.futo.circles.core.databinding.ListItemInvitedGalleryBinding import org.futo.circles.core.databinding.ListItemJoinedGalleryBinding import org.futo.circles.core.extensions.loadMatrixImage -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.feature.textDrawable.ColorGenerator @@ -71,7 +71,7 @@ class InvitedGalleryViewHolder( with(binding) { tvGalleryTitle.text = data.info.title - ivGallery.loadProfileIcon( + ivGallery.loadRoomProfileIcon( data.info.avatarUrl, data.info.title, applyBlur = data.shouldBlurIcon diff --git a/core/src/main/java/org/futo/circles/core/feature/room/circles/following/list/FollowingViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/room/circles/following/list/FollowingViewHolder.kt index 77e20cc02..5cac6fd53 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/circles/following/list/FollowingViewHolder.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/circles/following/list/FollowingViewHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import org.futo.circles.core.R import org.futo.circles.core.databinding.ListItemFollowingBinding -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.base.list.ViewBindingHolder @@ -28,7 +28,7 @@ class FollowingViewHolder( fun bind(data: FollowingListItem) { binding.tvCircleName.text = data.name binding.tvUserName.text = data.ownerName - binding.ivRoom.loadProfileIcon(data.avatarUrl, data.name) + binding.ivRoom.loadRoomProfileIcon(data.avatarUrl, data.name) binding.tvUpdateTime.text = context.getString( R.string.last_updated_formatter, DateUtils.getRelativeTimeSpanString( data.updatedTime, System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS diff --git a/core/src/main/java/org/futo/circles/core/feature/room/update/circle/UpdateCircleDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/update/circle/UpdateCircleDialogFragment.kt index b9855a561..85a9b7beb 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/update/circle/UpdateCircleDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/update/circle/UpdateCircleDialogFragment.kt @@ -10,7 +10,7 @@ import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.core.R import org.futo.circles.core.databinding.DialogFragmentUpdateCircleBinding import org.futo.circles.core.extensions.getText -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.feature.picker.helper.MediaPickerHelper import org.futo.circles.core.feature.room.update.UpdateRoomDialogFragment import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -40,7 +40,7 @@ class UpdateCircleDialogFragment : } override fun setInitialRoomData(room: RoomSummary) { - binding.ivCover.loadProfileIcon(room.avatarUrl, room.displayName) + binding.ivCover.loadRoomProfileIcon(room.avatarUrl, room.displayName) binding.tilName.editText?.setText(room.displayName) val isCircleShared = viewModel.isCircleShared(roomId) binding.btnPrivate.isChecked = !isCircleShared diff --git a/core/src/main/java/org/futo/circles/core/feature/room/update/gallery/UpdateGalleryDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/update/gallery/UpdateGalleryDialogFragment.kt index 8f070b37c..1b30b1792 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/update/gallery/UpdateGalleryDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/update/gallery/UpdateGalleryDialogFragment.kt @@ -11,7 +11,7 @@ import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.core.R import org.futo.circles.core.databinding.DialogFragmentUpdateGalleryBinding import org.futo.circles.core.extensions.getText -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.feature.picker.helper.MediaPickerHelper import org.futo.circles.core.feature.room.update.UpdateRoomDialogFragment import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -41,7 +41,7 @@ class UpdateGalleryDialogFragment : } override fun setInitialRoomData(room: RoomSummary) { - binding.ivCover.loadProfileIcon(room.avatarUrl, room.displayName) + binding.ivCover.loadRoomProfileIcon(room.avatarUrl, room.displayName) binding.tilName.editText?.setText(room.displayName) } diff --git a/core/src/main/java/org/futo/circles/core/feature/room/update/group/UpdateGroupDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/update/group/UpdateGroupDialogFragment.kt index f1332ce5f..5ee6308ba 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/update/group/UpdateGroupDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/update/group/UpdateGroupDialogFragment.kt @@ -10,7 +10,7 @@ import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.core.R import org.futo.circles.core.databinding.DialogFragmentUpdateGroupBinding import org.futo.circles.core.extensions.getText -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.feature.picker.helper.MediaPickerHelper import org.futo.circles.core.feature.room.update.UpdateRoomDialogFragment import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -40,7 +40,7 @@ class UpdateGroupDialogFragment : } override fun setInitialRoomData(room: RoomSummary) { - binding.ivCover.loadProfileIcon(room.avatarUrl, room.displayName) + binding.ivCover.loadRoomProfileIcon(room.avatarUrl, room.displayName) binding.tilName.editText?.setText(room.displayName) binding.tilTopic.editText?.setText(room.topic) } diff --git a/core/src/main/java/org/futo/circles/core/feature/timeline/options/TimelineOptionsDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/timeline/options/TimelineOptionsDialogFragment.kt index 8db7e9614..29f7065eb 100644 --- a/core/src/main/java/org/futo/circles/core/feature/timeline/options/TimelineOptionsDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/timeline/options/TimelineOptionsDialogFragment.kt @@ -13,7 +13,7 @@ import org.futo.circles.core.databinding.DialogFragmentTimelineOptionsBinding import org.futo.circles.core.extensions.isCurrentUserAbleToChangeSettings import org.futo.circles.core.extensions.isCurrentUserAbleToInvite import org.futo.circles.core.extensions.isCurrentUserOnlyAdmin -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse import org.futo.circles.core.extensions.setEnabledViews @@ -150,7 +150,7 @@ class TimelineOptionsDialogFragment : } viewModel.roomSummaryLiveData?.observeData(this) { it.getOrNull()?.let { room -> - binding.ivCover.loadProfileIcon(room.avatarUrl, room.displayName) + binding.ivCover.loadRoomProfileIcon(room.avatarUrl, room.displayName) binding.toolbar.title = room.displayName } } diff --git a/core/src/main/java/org/futo/circles/core/view/UserListItemView.kt b/core/src/main/java/org/futo/circles/core/view/UserListItemView.kt index fdf0c2958..8cd33c0e8 100644 --- a/core/src/main/java/org/futo/circles/core/view/UserListItemView.kt +++ b/core/src/main/java/org/futo/circles/core/view/UserListItemView.kt @@ -6,7 +6,7 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import org.futo.circles.core.R import org.futo.circles.core.databinding.ViewUserListItemBinding -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadUserProfileIcon import org.futo.circles.core.extensions.setSelectableItemBackground import org.futo.circles.core.model.CirclesUserSummary @@ -22,7 +22,7 @@ class UserListItemView( with(binding) { tvUserName.text = user.name tvUserId.text = user.id - ivUserImage.loadProfileIcon(user.avatarUrl, user.name) + ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id) } } @@ -37,7 +37,7 @@ class UserListItemView( binding.ivUserImage.setImageResource(R.drawable.ic_check_circle) setBackgroundColor(context.getColor(R.color.highlight_color)) } else { - binding.ivUserImage.loadProfileIcon(user.avatarUrl, user.name) + binding.ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id) setSelectableItemBackground() } } diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/select/list/SelectGalleryViewHolder.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/select/list/SelectGalleryViewHolder.kt index 297400889..501be8803 100644 --- a/gallery/src/main/java/org/futo/circles/gallery/feature/select/list/SelectGalleryViewHolder.kt +++ b/gallery/src/main/java/org/futo/circles/gallery/feature/select/list/SelectGalleryViewHolder.kt @@ -2,7 +2,7 @@ package org.futo.circles.gallery.feature.select.list import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import org.futo.circles.core.extensions.loadProfileIcon +import org.futo.circles.core.extensions.loadRoomProfileIcon import org.futo.circles.core.extensions.onClick import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.base.list.ViewBindingHolder @@ -24,7 +24,7 @@ class SelectGalleryViewHolder( fun bind(data: SelectableRoomListItem) { with(binding) { - baseGalleryItem.ivGalleryImage.loadProfileIcon(data.info.avatarUrl, "") + baseGalleryItem.ivGalleryImage.loadRoomProfileIcon(data.info.avatarUrl, "") baseGalleryItem.tvGalleryName.text = data.info.title ivSelect.setImageResource( if (data.isSelected) org.futo.circles.core.R.drawable.ic_check_circle -- GitLab