2020-03-20 08:02:10 +11:00
|
|
|
package com.keylesspalace.tusky.adapter
|
|
|
|
|
2020-11-05 04:21:41 +11:00
|
|
|
import android.graphics.Typeface
|
|
|
|
import android.text.SpannableStringBuilder
|
|
|
|
import android.text.Spanned
|
|
|
|
import android.text.style.StyleSpan
|
2020-03-20 08:02:10 +11:00
|
|
|
import android.view.View
|
|
|
|
import androidx.preference.PreferenceManager
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
|
import com.keylesspalace.tusky.R
|
|
|
|
import com.keylesspalace.tusky.entity.Account
|
|
|
|
import com.keylesspalace.tusky.interfaces.AccountActionListener
|
2021-02-06 18:14:51 +11:00
|
|
|
import com.keylesspalace.tusky.util.*
|
2020-03-20 08:02:10 +11:00
|
|
|
import kotlinx.android.synthetic.main.item_follow_request_notification.view.*
|
|
|
|
|
2021-02-06 18:14:51 +11:00
|
|
|
internal class FollowRequestViewHolder(
|
|
|
|
itemView: View,
|
|
|
|
private val showHeader: Boolean) : RecyclerView.ViewHolder(itemView) {
|
2020-03-20 08:02:10 +11:00
|
|
|
private var id: String? = null
|
|
|
|
|
2021-02-06 18:14:51 +11:00
|
|
|
fun setupWithAccount(account: Account, animateAvatar: Boolean, animateEmojis: Boolean) {
|
2020-03-20 08:02:10 +11:00
|
|
|
id = account.id
|
2020-11-05 04:21:41 +11:00
|
|
|
val wrappedName = account.name.unicodeWrap()
|
2021-02-06 18:14:51 +11:00
|
|
|
val emojifiedName: CharSequence = wrappedName.emojify(account.emojis, itemView, animateEmojis)
|
2020-03-20 08:02:10 +11:00
|
|
|
itemView.displayNameTextView.text = emojifiedName
|
|
|
|
if (showHeader) {
|
2020-11-05 04:21:41 +11:00
|
|
|
val wholeMessage: String = itemView.context.getString(R.string.notification_follow_request_format, wrappedName)
|
|
|
|
itemView.notificationTextView?.text = SpannableStringBuilder(wholeMessage).apply {
|
|
|
|
setSpan(StyleSpan(Typeface.BOLD), 0, wrappedName.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
2021-02-06 18:14:51 +11:00
|
|
|
}.emojify(account.emojis, itemView, animateEmojis)
|
2020-03-20 08:02:10 +11:00
|
|
|
}
|
2020-03-28 05:04:28 +11:00
|
|
|
itemView.notificationTextView?.visible(showHeader)
|
2020-03-20 08:02:10 +11:00
|
|
|
val format = itemView.context.getString(R.string.status_username_format)
|
|
|
|
val formattedUsername = String.format(format, account.username)
|
|
|
|
itemView.usernameTextView.text = formattedUsername
|
|
|
|
val avatarRadius = itemView.avatar.context.resources.getDimensionPixelSize(R.dimen.avatar_radius_48dp)
|
|
|
|
loadAvatar(account.avatar, itemView.avatar, avatarRadius, animateAvatar)
|
|
|
|
}
|
|
|
|
|
|
|
|
fun setupActionListener(listener: AccountActionListener) {
|
|
|
|
itemView.acceptButton.setOnClickListener {
|
|
|
|
val position = adapterPosition
|
|
|
|
if (position != RecyclerView.NO_POSITION) {
|
|
|
|
listener.onRespondToFollowRequest(true, id, position)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
itemView.rejectButton.setOnClickListener {
|
|
|
|
val position = adapterPosition
|
|
|
|
if (position != RecyclerView.NO_POSITION) {
|
|
|
|
listener.onRespondToFollowRequest(false, id, position)
|
|
|
|
}
|
|
|
|
}
|
2020-07-08 04:35:31 +10:00
|
|
|
itemView.setOnClickListener { listener.onViewAccount(id) }
|
2020-03-20 08:02:10 +11:00
|
|
|
}
|
|
|
|
}
|