mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-25 04:41:02 +00:00
61 lines
2.7 KiB
Kotlin
61 lines
2.7 KiB
Kotlin
package ani.dantotsu.profile.activity
|
|
|
|
import android.content.Context
|
|
import android.view.View
|
|
import androidx.core.content.ContextCompat
|
|
import ani.dantotsu.R
|
|
import ani.dantotsu.connections.anilist.api.Activity
|
|
import ani.dantotsu.databinding.ItemActivityBinding
|
|
import ani.dantotsu.loadImage
|
|
import com.bumptech.glide.Glide
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
|
import com.bumptech.glide.load.model.GlideUrl
|
|
import com.bumptech.glide.request.RequestOptions
|
|
import com.xwray.groupie.viewbinding.BindableItem
|
|
import jp.wasabeef.glide.transformations.BlurTransformation
|
|
|
|
class ActivityItem(
|
|
private val activity: Activity,
|
|
val clickCallback: (Int) -> Unit
|
|
): BindableItem<ItemActivityBinding>() {
|
|
private lateinit var binding: ItemActivityBinding
|
|
override fun bind(viewBinding: ItemActivityBinding, position: Int) {
|
|
binding = viewBinding
|
|
when (activity.typename) {
|
|
"ListActivity" ->{
|
|
binding.activityUserName.text = activity.user?.name
|
|
binding.activityUserAvatar.loadImage(activity.user?.avatar?.medium)
|
|
binding.activityTime.text = ActivityItemBuilder.getDateTime(activity.createdAt)
|
|
val color = if (activity.isLiked == true)
|
|
ContextCompat.getColor(binding.root.context, R.color.yt_red)
|
|
else
|
|
ContextCompat.getColor(binding.root.context, R.color.bg_opp)
|
|
binding.activityFavorite.setColorFilter(color)
|
|
|
|
binding.activityMediaName.text = activity.media?.title?.userPreferred
|
|
binding.activityText.text = "${activity.user!!.name} ${activity.status} ${activity.media!!.title!!.userPreferred}"
|
|
binding.activityCover.loadImage(activity.media.coverImage?.medium)
|
|
val context = binding.root.context
|
|
val banner = activity.media.bannerImage
|
|
if (banner != null) {
|
|
if (!(context as android.app.Activity).isDestroyed)
|
|
Glide.with(context as Context)
|
|
.load(GlideUrl(banner))
|
|
.diskCacheStrategy(DiskCacheStrategy.ALL).override(400)
|
|
.apply(RequestOptions.bitmapTransform(BlurTransformation(2, 2)))
|
|
.into(binding.activityBannerImage)
|
|
} else {
|
|
binding.activityBannerImage.setImageResource(R.drawable.linear_gradient_bg)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun getLayout(): Int {
|
|
return R.layout.item_activity
|
|
}
|
|
|
|
override fun initializeViewBinding(view: View): ItemActivityBinding {
|
|
return ItemActivityBinding.bind(view)
|
|
}
|
|
} |