feat: long tap like button to see users

This commit is contained in:
aayush262 2024-03-15 18:32:51 +05:30
parent c5abfa15e0
commit 5dbc01dba3
11 changed files with 186 additions and 41 deletions

View file

@ -1,9 +1,9 @@
package ani.dantotsu.profile.activity
import android.annotation.SuppressLint
import android.content.Context
import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.LinearLayoutManager
import ani.dantotsu.R
import ani.dantotsu.blurImage
@ -12,6 +12,8 @@ import ani.dantotsu.connections.anilist.Anilist
import ani.dantotsu.connections.anilist.api.Activity
import ani.dantotsu.databinding.ItemActivityBinding
import ani.dantotsu.loadImage
import ani.dantotsu.profile.User
import ani.dantotsu.profile.UsersDialogFragment
import ani.dantotsu.snackString
import ani.dantotsu.util.AniMarkdown.Companion.getBasicAniHTML
import com.bumptech.glide.Glide
@ -29,7 +31,8 @@ import kotlinx.coroutines.withContext
class ActivityItem(
private val activity: Activity,
val clickCallback: (Int, type: String) -> Unit
val clickCallback: (Int, type: String) -> Unit,
private val FragActivity: FragmentActivity
) : BindableItem<ItemActivityBinding>() {
private lateinit var binding: ItemActivityBinding
private lateinit var repliesAdapter: GroupieAdapter
@ -102,8 +105,18 @@ class ActivityItem(
}
}
}
val context = binding.root.context
val userList = arrayListOf<User>()
activity.likes?.forEach{ i ->
userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage))
}
binding.activityLike.setOnLongClickListener{
UsersDialogFragment().apply { userList(userList)
show(FragActivity.supportFragmentManager, "dialog")
}
true
}
when (activity.typename) {
"ListActivity" -> {

View file

@ -72,7 +72,7 @@ class FeedFragment : Fragment() {
val filtered = activityList.filterNot { //filter out messages that are not directed to the user
it.recipient?.id != null && it.recipient.id != Anilist.userid
}
adapter.update(filtered.map { ActivityItem(it, ::onActivityClick) })
adapter.update(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) })
}
binding.listProgressBar.visibility = ViewGroup.GONE
val scrollView = binding.listRecyclerView
@ -95,7 +95,7 @@ class FeedFragment : Fragment() {
val filtered = activities.filterNot {
it.recipient?.id != null && it.recipient.id != Anilist.userid
}
adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick) })
adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) })
}
binding.feedRefresh.visibility = ViewGroup.GONE
}

View file

@ -0,0 +1,49 @@
package ani.dantotsu.profile.activity
import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import ani.dantotsu.databinding.ItemFollowerBinding
import ani.dantotsu.loadImage
import ani.dantotsu.profile.ProfileActivity
import ani.dantotsu.profile.User
import ani.dantotsu.setAnimation
class UsersAdapter(private val user: ArrayList<User>) : RecyclerView.Adapter<UsersAdapter.UsersViewHolder>() {
inner class UsersViewHolder(val binding: ItemFollowerBinding) :
RecyclerView.ViewHolder(binding.root) {
init {
itemView.setOnClickListener {
ContextCompat.startActivity(
binding.root.context, Intent(binding.root.context, ProfileActivity::class.java)
.putExtra("userId", user[bindingAdapterPosition].id), null
)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UsersViewHolder {
return UsersViewHolder(
ItemFollowerBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}
override fun onBindViewHolder(holder: UsersViewHolder, position: Int) {
val b = holder.binding
setAnimation(b.root.context, b.root)
val user = user[position]
b.profileUserAvatar.loadImage(user.pfp)
b.profileBannerImage.loadImage(user.banner)
b.profileUserName.text = user.name
}
override fun getItemCount(): Int = user.size
}