forked from GitHub-Mirror/riotX-android
41 lines
1.5 KiB
Kotlin
41 lines
1.5 KiB
Kotlin
package im.vector.riotredesign.features.home
|
|
|
|
import android.widget.ImageView
|
|
import androidx.core.content.ContextCompat
|
|
import com.amulyakhare.textdrawable.TextDrawable
|
|
import com.bumptech.glide.request.RequestOptions
|
|
import im.vector.matrix.android.api.Matrix
|
|
import im.vector.matrix.android.api.session.room.model.RoomMember
|
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
|
import im.vector.riotredesign.R
|
|
import im.vector.riotredesign.core.extensions.firstCharAsString
|
|
import im.vector.riotredesign.core.glide.GlideApp
|
|
|
|
object AvatarRenderer {
|
|
|
|
fun render(roomMember: RoomMember, imageView: ImageView) {
|
|
render(roomMember.avatarUrl, roomMember.displayName, imageView)
|
|
}
|
|
|
|
fun render(roomSummary: RoomSummary, imageView: ImageView) {
|
|
render(roomSummary.avatarUrl, roomSummary.displayName, imageView)
|
|
}
|
|
|
|
fun render(avatarUrl: String?, name: String?, imageView: ImageView) {
|
|
if (name.isNullOrEmpty()) {
|
|
return
|
|
}
|
|
val resolvedUrl = Matrix.getInstance().currentSession.contentUrlResolver().resolveFullSize(avatarUrl)
|
|
val avatarColor = ContextCompat.getColor(imageView.context, R.color.pale_teal)
|
|
val fallbackDrawable = TextDrawable.builder().buildRound(name.firstCharAsString().toUpperCase(), avatarColor)
|
|
|
|
GlideApp
|
|
.with(imageView)
|
|
.load(resolvedUrl)
|
|
.placeholder(fallbackDrawable)
|
|
.apply(RequestOptions.circleCropTransform())
|
|
.into(imageView)
|
|
}
|
|
|
|
|
|
} |