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 c5ac092786bc304e4a80a3f25bb10176c5b8ea8e..e5b172b7097c5320eccd8e89c098110c861dc53a 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 7dfef1833cdb61506cc4367533dbc31ceb1b78fa..60e8163cc4196a5e66870ebf703b5f00890d67c4 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 3103bbda42ffb2391659ceb8915849cf1cd65cc3..86e19d4a4769c2977ba0d42c3e98b5a2e4a139ea 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 6cd31da3f5cc35cc024d4d0fd743ec44edc38fd9..fcbd792f1c777798628b6864c96d4eac040e9134 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 0d07c545c6bc35cd16910e96d1b56313953a2b64..d9896b6fc4387d99b676665182637aeee0416eaa 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 3ce87c665a01f981a467a9dc565a228930c26258..bbc2df7193112f4ebfc4c6a8227cb7f9e92d43b4 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 e2fa98343937dc54b6d7a7ca3fc8c4faa385286a..9b9e4ebd2a69ffee3c8d8118dc5dc2e67b871787 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 97a60a0ed5dc7eace1210022797518376a256d21..0956f183bec8ab916439e09c46cd205fc6ec653b 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 b6d3f11da0619e1fcc356ec5095e92b5ea26eda8..648e41d7eb1754472f6e8beee003e1ec640aa74a 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 1dad4b9b9ca646917b98dcd654ff0b70edc24334..37815325cc0c77a1ddd11ba3f736ccbd78fad22a 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 b4fd3aaba13f285206dccb26320b2dc3eb6809ed..c6d3f16bc2f230b1cbfb9577c05201fecf4a00ea 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 a7818a834b7a284acbfb9a05f640ef00488be02d..379ecc277af7f15b76e866af14640ed26ce23772 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 a71265aebfc2350b2e3453730bb96163f3193442..b8564af5ee33489ffb13455990cb919f4a223236 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 a4510df615fabc9fc9f5c38b7c213954ec386696..a0dce0f1ba47e173843e86371b9ef360fd18032e 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 05fed5bff02412e75a474249dab419a1705c545f..c00ca63f5dcc67c02cc1b916de9c16fc1ffe7566 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 8a99eaf466608c1ba89e88405f80892d1cf8226c..78a8465f26641193878b66c03ce72febe4ce123e 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 77e20cc02dbd3827af31720b21fc9f1e630628b0..5cac6fd53f8658c7de46e8e9fcbc43c11a8d6178 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 b9855a561eb26a70e3e674168a035b35643e7337..85a9b7beb30f897cdf29b260fe22eb021da33ce2 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 8f070b37cbfbbbb0f7a3714fd411ff9e832f496b..1b30b1792b64fe681967d13ec8036b86fab79c13 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 f1332ce5fae6ee206beaa28b8c162c576209dd75..5ee6308baa4d1e3e1e84853546de49de42e2ddb4 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 8db7e96147847203b80eeaafc60d4d67e5aafdd7..29f7065eb9428193e84728195a160a7ee70ad7bc 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 fdf0c2958f08c8aa1f87a9cef77f125ce7a6e7c9..8cd33c0e818b21590cf9bdb63f89aa32cbd9c702 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 297400889cf2c2002ff2a6786d1358fb4e2fab35..501be8803739f33b7abb457947f657429a97cc5a 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