session-android/app/src/main/java/org/thoughtcrime/securesms/loki/activities/EditClosedGroupMembersAdapter.kt

63 lines
2.1 KiB
Kotlin
Raw Normal View History

2020-08-14 06:52:15 +02:00
package org.thoughtcrime.securesms.loki.activities
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
2020-08-14 06:52:15 +02:00
import android.view.ViewGroup
2021-01-13 07:11:30 +01:00
import org.session.libsession.messaging.threads.Address
2020-08-14 06:52:15 +02:00
import org.thoughtcrime.securesms.loki.views.UserView
import org.thoughtcrime.securesms.mms.GlideRequests
2021-05-18 08:03:47 +02:00
import org.session.libsession.utilities.recipients.Recipient
2021-04-21 08:34:22 +02:00
import org.session.libsession.utilities.TextSecurePreferences
2020-08-14 06:52:15 +02:00
class EditClosedGroupMembersAdapter(
2020-08-18 01:34:22 +02:00
private val context: Context,
private val glide: GlideRequests,
2021-04-21 08:34:22 +02:00
private val admin: Boolean,
2020-08-18 01:34:22 +02:00
private val memberClickListener: ((String) -> Unit)? = null
2020-08-14 06:52:15 +02:00
) : RecyclerView.Adapter<EditClosedGroupMembersAdapter.ViewHolder>() {
private val members = ArrayList<String>()
private val zombieMembers = ArrayList<String>()
2020-08-14 06:52:15 +02:00
fun setMembers(members: Collection<String>) {
this.members.clear()
this.members.addAll(members)
notifyDataSetChanged()
}
2020-08-14 06:52:15 +02:00
fun setZombieMembers(members: Collection<String>) {
this.zombieMembers.clear()
this.zombieMembers.addAll(members)
notifyDataSetChanged()
}
override fun getItemCount(): Int = members.size
2020-08-14 06:52:15 +02:00
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = UserView(context)
return ViewHolder(view)
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
val member = members[position]
2021-04-21 08:34:22 +02:00
val unlocked = admin && member != TextSecurePreferences.getLocalNumber(context)
viewHolder.view.bind(Recipient.from(
2020-08-18 01:34:22 +02:00
context,
Address.fromSerialized(member), false),
glide,
2021-04-21 08:34:22 +02:00
if (unlocked) UserView.ActionIndicator.Menu else UserView.ActionIndicator.None)
if (zombieMembers.contains(member))
viewHolder.view.alpha = 0.5F
2021-04-26 06:14:39 +02:00
else
viewHolder.view.alpha = 1F
2021-04-21 08:34:22 +02:00
if (unlocked) {
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
}
2020-08-14 06:52:15 +02:00
}
class ViewHolder(val view: UserView) : RecyclerView.ViewHolder(view)
}