2020-08-14 06:52:15 +02:00
|
|
|
package org.thoughtcrime.securesms.loki.activities
|
|
|
|
|
|
|
|
import android.content.Context
|
2020-08-19 02:06:26 +02:00
|
|
|
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>() {
|
2020-08-24 08:46:12 +02:00
|
|
|
|
2020-08-17 04:12:25 +02:00
|
|
|
private val members = ArrayList<String>()
|
2021-04-23 06:07:10 +02:00
|
|
|
private val zombieMembers = ArrayList<String>()
|
2020-08-14 06:52:15 +02:00
|
|
|
|
2020-08-17 04:12:25 +02:00
|
|
|
fun setMembers(members: Collection<String>) {
|
|
|
|
this.members.clear()
|
|
|
|
this.members.addAll(members)
|
|
|
|
notifyDataSetChanged()
|
|
|
|
}
|
2020-08-14 06:52:15 +02:00
|
|
|
|
2021-04-23 06:07:10 +02:00
|
|
|
fun setZombieMembers(members: Collection<String>) {
|
|
|
|
this.zombieMembers.clear()
|
|
|
|
this.zombieMembers.addAll(members)
|
|
|
|
notifyDataSetChanged()
|
|
|
|
}
|
|
|
|
|
2020-08-17 04:12:25 +02:00
|
|
|
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) {
|
2020-08-17 04:12:25 +02:00
|
|
|
val member = members[position]
|
|
|
|
|
2021-04-21 08:34:22 +02:00
|
|
|
val unlocked = admin && member != TextSecurePreferences.getLocalNumber(context)
|
2020-08-17 04:12:25 +02:00
|
|
|
|
|
|
|
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)
|
2020-08-17 04:12:25 +02:00
|
|
|
|
2021-04-23 06:07:10 +02:00
|
|
|
if (zombieMembers.contains(member))
|
|
|
|
viewHolder.view.alpha = 0.5F
|
2021-04-26 06:14:39 +02:00
|
|
|
else
|
|
|
|
viewHolder.view.alpha = 1F
|
2021-04-23 06:07:10 +02:00
|
|
|
|
2021-04-21 08:34:22 +02:00
|
|
|
if (unlocked) {
|
2020-08-17 04:12:25 +02:00
|
|
|
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
|
|
|
|
}
|
2020-08-14 06:52:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
class ViewHolder(val view: UserView) : RecyclerView.ViewHolder(view)
|
|
|
|
}
|