mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-12 00:13:38 +00:00
only admin can delete members
This commit is contained in:
parent
5c9ddef19b
commit
0653b2c2d3
@ -38,7 +38,9 @@ import java.io.IOException
|
|||||||
class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
||||||
private val originalMembers = HashSet<String>()
|
private val originalMembers = HashSet<String>()
|
||||||
private val members = HashSet<String>()
|
private val members = HashSet<String>()
|
||||||
|
private val zombies = HashSet<String>()
|
||||||
private var hasNameChanged = false
|
private var hasNameChanged = false
|
||||||
|
private var isSelfAdmin = false
|
||||||
private var isLoading = false
|
private var isLoading = false
|
||||||
set(newValue) { field = newValue; invalidateOptionsMenu() }
|
set(newValue) { field = newValue; invalidateOptionsMenu() }
|
||||||
|
|
||||||
@ -54,7 +56,10 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val memberListAdapter by lazy {
|
private val memberListAdapter by lazy {
|
||||||
EditClosedGroupMembersAdapter(this, GlideApp.with(this), this::onMemberClick)
|
if (isSelfAdmin)
|
||||||
|
EditClosedGroupMembersAdapter(this, GlideApp.with(this), isSelfAdmin, this::onMemberClick)
|
||||||
|
else
|
||||||
|
EditClosedGroupMembersAdapter(this, GlideApp.with(this), isSelfAdmin)
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var mainContentContainer: LinearLayout
|
private lateinit var mainContentContainer: LinearLayout
|
||||||
@ -81,7 +86,10 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
ThemeUtil.getThemedDrawableResId(this, R.attr.actionModeCloseDrawable))
|
ThemeUtil.getThemedDrawableResId(this, R.attr.actionModeCloseDrawable))
|
||||||
|
|
||||||
groupID = intent.getStringExtra(groupIDKey)!!
|
groupID = intent.getStringExtra(groupIDKey)!!
|
||||||
originalName = DatabaseFactory.getGroupDatabase(this).getGroup(groupID).get().title
|
val groupInfo = DatabaseFactory.getGroupDatabase(this).getGroup(groupID).get()
|
||||||
|
originalName = groupInfo.title
|
||||||
|
isSelfAdmin = groupInfo.admins.any{ it.serialize() == TextSecurePreferences.getLocalNumber(this) }
|
||||||
|
|
||||||
name = originalName
|
name = originalName
|
||||||
|
|
||||||
mainContentContainer = findViewById(R.id.mainContentContainer)
|
mainContentContainer = findViewById(R.id.mainContentContainer)
|
||||||
@ -178,10 +186,6 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
this.members.addAll(members)
|
this.members.addAll(members)
|
||||||
memberListAdapter.setMembers(members)
|
memberListAdapter.setMembers(members)
|
||||||
|
|
||||||
val admins = DatabaseFactory.getGroupDatabase(this).getGroup(groupID).get().admins.map { it.toString() }.toMutableSet()
|
|
||||||
admins.remove(TextSecurePreferences.getLocalNumber(this))
|
|
||||||
memberListAdapter.setLockedMembers(admins)
|
|
||||||
|
|
||||||
mainContentContainer.visibility = if (members.isEmpty()) View.GONE else View.VISIBLE
|
mainContentContainer.visibility = if (members.isEmpty()) View.GONE else View.VISIBLE
|
||||||
emptyStateContainer.visibility = if (members.isEmpty()) View.VISIBLE else View.GONE
|
emptyStateContainer.visibility = if (members.isEmpty()) View.VISIBLE else View.GONE
|
||||||
|
|
||||||
|
@ -7,15 +7,16 @@ import org.session.libsession.messaging.threads.Address
|
|||||||
import org.thoughtcrime.securesms.loki.views.UserView
|
import org.thoughtcrime.securesms.loki.views.UserView
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
import org.session.libsession.messaging.threads.recipients.Recipient
|
import org.session.libsession.messaging.threads.recipients.Recipient
|
||||||
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
|
|
||||||
class EditClosedGroupMembersAdapter(
|
class EditClosedGroupMembersAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val glide: GlideRequests,
|
private val glide: GlideRequests,
|
||||||
|
private val admin: Boolean,
|
||||||
private val memberClickListener: ((String) -> Unit)? = null
|
private val memberClickListener: ((String) -> Unit)? = null
|
||||||
) : RecyclerView.Adapter<EditClosedGroupMembersAdapter.ViewHolder>() {
|
) : RecyclerView.Adapter<EditClosedGroupMembersAdapter.ViewHolder>() {
|
||||||
|
|
||||||
private val members = ArrayList<String>()
|
private val members = ArrayList<String>()
|
||||||
private val lockedMembers = HashSet<String>()
|
|
||||||
|
|
||||||
fun setMembers(members: Collection<String>) {
|
fun setMembers(members: Collection<String>) {
|
||||||
this.members.clear()
|
this.members.clear()
|
||||||
@ -23,12 +24,6 @@ class EditClosedGroupMembersAdapter(
|
|||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setLockedMembers(members: Collection<String>) {
|
|
||||||
this.lockedMembers.clear()
|
|
||||||
this.lockedMembers.addAll(members)
|
|
||||||
notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemCount(): Int = members.size
|
override fun getItemCount(): Int = members.size
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
@ -39,15 +34,15 @@ class EditClosedGroupMembersAdapter(
|
|||||||
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
||||||
val member = members[position]
|
val member = members[position]
|
||||||
|
|
||||||
val lockedMember = lockedMembers.contains(member)
|
val unlocked = admin && member != TextSecurePreferences.getLocalNumber(context)
|
||||||
|
|
||||||
viewHolder.view.bind(Recipient.from(
|
viewHolder.view.bind(Recipient.from(
|
||||||
context,
|
context,
|
||||||
Address.fromSerialized(member), false),
|
Address.fromSerialized(member), false),
|
||||||
glide,
|
glide,
|
||||||
if (lockedMember) UserView.ActionIndicator.None else UserView.ActionIndicator.Menu)
|
if (unlocked) UserView.ActionIndicator.Menu else UserView.ActionIndicator.None)
|
||||||
|
|
||||||
if (!lockedMember) {
|
if (unlocked) {
|
||||||
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
|
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user