Skip to content
Snippets Groups Projects
Commit 37e2f837 authored by Taras's avatar Taras
Browse files

Add users page opening from manage members

parent 71869fde
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,7 @@ import org.futo.circles.core.model.CancelInvite ...@@ -22,6 +22,7 @@ import org.futo.circles.core.model.CancelInvite
import org.futo.circles.core.model.RemoveRoomUser import org.futo.circles.core.model.RemoveRoomUser
import org.futo.circles.core.model.ResendInvite import org.futo.circles.core.model.ResendInvite
import org.futo.circles.core.model.UnbanUser import org.futo.circles.core.model.UnbanUser
import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.session.room.model.PowerLevelsContent import org.matrix.android.sdk.api.session.room.model.PowerLevelsContent
@AndroidEntryPoint @AndroidEntryPoint
...@@ -34,7 +35,13 @@ class ManageMembersDialogFragment : ...@@ -34,7 +35,13 @@ class ManageMembersDialogFragment :
private val membersListAdapter by lazy { private val membersListAdapter by lazy {
GroupMembersListAdapter( GroupMembersListAdapter(
this, this,
onToggleOptions = { userId -> viewModel.toggleOptionsVisibility(userId) } onToggleOptions = { userId -> viewModel.toggleOptionsVisibility(userId) },
onOpenUserPage = {
if (it == MatrixSessionProvider.currentSession?.myUserId) return@GroupMembersListAdapter
findNavController().navigateSafe(
ManageMembersDialogFragmentDirections.toUserDialogFragment(it)
)
}
) )
} }
......
...@@ -2,7 +2,9 @@ package org.futo.circles.core.feature.room.manage_members.list ...@@ -2,7 +2,9 @@ package org.futo.circles.core.feature.room.manage_members.list
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.futo.circles.core.R
import org.futo.circles.core.base.list.ViewBindingHolder import org.futo.circles.core.base.list.ViewBindingHolder
import org.futo.circles.core.base.list.context import org.futo.circles.core.base.list.context
import org.futo.circles.core.databinding.ListItemBannedMemberBinding import org.futo.circles.core.databinding.ListItemBannedMemberBinding
...@@ -28,7 +30,8 @@ abstract class ManageMembersViewHolder(view: View) : RecyclerView.ViewHolder(vie ...@@ -28,7 +30,8 @@ abstract class ManageMembersViewHolder(view: View) : RecyclerView.ViewHolder(vie
class MemberViewHolder( class MemberViewHolder(
parent: ViewGroup, parent: ViewGroup,
private val onUserClicked: (Int) -> Unit, private val onOpenUserClicked: (Int) -> Unit,
private val onToggleClicked: (Int) -> Unit,
private val manageMembersListener: ManageMembersOptionsListener private val manageMembersListener: ManageMembersOptionsListener
) : ManageMembersViewHolder(inflate(parent, ListItemMemberBinding::inflate)) { ) : ManageMembersViewHolder(inflate(parent, ListItemMemberBinding::inflate)) {
...@@ -42,13 +45,16 @@ class MemberViewHolder( ...@@ -42,13 +45,16 @@ class MemberViewHolder(
with(binding) { with(binding) {
tvRole.text = context.getString(data.role.getRoleNameResId()) tvRole.text = context.getString(data.role.getRoleNameResId())
vUser.bind(data.user) vUser.bind(data.user)
onClick(vUser.findViewById<ImageView>(R.id.ivUserImage)) {
onOpenUserClicked(it)
}
if (data.isOptionsAvailable) { if (data.isOptionsAvailable) {
ivOptionsArrow.visible() ivOptionsArrow.visible()
ivOptionsArrow.setImageResource( ivOptionsArrow.setImageResource(
if (data.isOptionsOpened) org.futo.circles.core.R.drawable.ic_keyboard_arrow_up if (data.isOptionsOpened) R.drawable.ic_keyboard_arrow_up
else org.futo.circles.core.R.drawable.ic_keyboard_arrow_down else R.drawable.ic_keyboard_arrow_down
) )
onClick(binding.contentLayout) { position -> onUserClicked(position) } onClick(binding.contentLayout) { position -> onToggleClicked(position) }
with(optionsView) { with(optionsView) {
setListener(manageMembersListener) setListener(manageMembersListener)
setIsVisible(data.isOptionsOpened) setIsVisible(data.isOptionsOpened)
...@@ -56,7 +62,7 @@ class MemberViewHolder( ...@@ -56,7 +62,7 @@ class MemberViewHolder(
} }
} else { } else {
ivOptionsArrow.gone() ivOptionsArrow.gone()
binding.contentLayout.setOnClickListener(null) onClick(binding.contentLayout) { position -> onOpenUserClicked(position) }
} }
} }
} }
...@@ -78,7 +84,8 @@ class ManageMembersHeaderViewHolder( ...@@ -78,7 +84,8 @@ class ManageMembersHeaderViewHolder(
class InvitedMemberViewHolder( class InvitedMemberViewHolder(
parent: ViewGroup, parent: ViewGroup,
private val onUserClicked: (Int) -> Unit, private val onOpenUserClicked: (Int) -> Unit,
private val onToggleClicked: (Int) -> Unit,
private val manageMembersListener: ManageMembersOptionsListener private val manageMembersListener: ManageMembersOptionsListener
) : ManageMembersViewHolder(inflate(parent, ListItemInvitedMemberBinding::inflate)) { ) : ManageMembersViewHolder(inflate(parent, ListItemInvitedMemberBinding::inflate)) {
...@@ -91,13 +98,16 @@ class InvitedMemberViewHolder( ...@@ -91,13 +98,16 @@ class InvitedMemberViewHolder(
with(binding) { with(binding) {
vUser.bind(data.user) vUser.bind(data.user)
onClick(vUser.findViewById<ImageView>(R.id.ivUserImage)) {
onOpenUserClicked(it)
}
if (data.isOptionsAvailable) { if (data.isOptionsAvailable) {
ivOptionsArrow.visible() ivOptionsArrow.visible()
ivOptionsArrow.setImageResource( ivOptionsArrow.setImageResource(
if (data.isOptionsOpened) org.futo.circles.core.R.drawable.ic_keyboard_arrow_up if (data.isOptionsOpened) R.drawable.ic_keyboard_arrow_up
else org.futo.circles.core.R.drawable.ic_keyboard_arrow_down else R.drawable.ic_keyboard_arrow_down
) )
onClick(binding.contentLayout) { position -> onUserClicked(position) } onClick(binding.contentLayout) { position -> onToggleClicked(position) }
binding.optionsLayout.setIsVisible(data.isOptionsOpened) binding.optionsLayout.setIsVisible(data.isOptionsOpened)
binding.btnRemove.setOnClickListener { binding.btnRemove.setOnClickListener {
manageMembersListener.cancelPendingInvitation(data.user.id) manageMembersListener.cancelPendingInvitation(data.user.id)
...@@ -107,7 +117,7 @@ class InvitedMemberViewHolder( ...@@ -107,7 +117,7 @@ class InvitedMemberViewHolder(
} }
} else { } else {
ivOptionsArrow.gone() ivOptionsArrow.gone()
binding.contentLayout.setOnClickListener(null) onClick(binding.contentLayout) { position -> onOpenUserClicked(position) }
} }
} }
} }
......
...@@ -13,7 +13,8 @@ private enum class ManageGroupMembersViewTypes { Header, Member, Invited, Banned ...@@ -13,7 +13,8 @@ private enum class ManageGroupMembersViewTypes { Header, Member, Invited, Banned
class GroupMembersListAdapter( class GroupMembersListAdapter(
private val manageMembersListener: ManageMembersOptionsListener, private val manageMembersListener: ManageMembersOptionsListener,
private val onToggleOptions: (String) -> Unit private val onToggleOptions: (String) -> Unit,
private val onOpenUserPage: (String) -> Unit,
) : BaseRvAdapter<ManageMembersListItem, ManageMembersViewHolder>( ) : BaseRvAdapter<ManageMembersListItem, ManageMembersViewHolder>(
DefaultIdEntityCallback() DefaultIdEntityCallback()
) { ) {
...@@ -30,13 +31,15 @@ class GroupMembersListAdapter( ...@@ -30,13 +31,15 @@ class GroupMembersListAdapter(
ManageGroupMembersViewTypes.Header -> ManageMembersHeaderViewHolder(parent) ManageGroupMembersViewTypes.Header -> ManageMembersHeaderViewHolder(parent)
ManageGroupMembersViewTypes.Member -> MemberViewHolder( ManageGroupMembersViewTypes.Member -> MemberViewHolder(
parent = parent, parent = parent,
onUserClicked = { position -> onToggleOptions(getItem(position).id) }, onToggleClicked = { position -> onToggleOptions(getItem(position).id) },
onOpenUserClicked = { position -> onOpenUserPage(getItem(position).id) },
manageMembersListener = manageMembersListener manageMembersListener = manageMembersListener
) )
ManageGroupMembersViewTypes.Invited -> InvitedMemberViewHolder( ManageGroupMembersViewTypes.Invited -> InvitedMemberViewHolder(
parent = parent, parent = parent,
onUserClicked = { position -> onToggleOptions(getItem(position).id) }, onToggleClicked = { position -> onToggleOptions(getItem(position).id) },
onOpenUserClicked = { position -> onOpenUserPage(getItem(position).id) },
manageMembersListener = manageMembersListener manageMembersListener = manageMembersListener
) )
......
...@@ -9,13 +9,12 @@ ...@@ -9,13 +9,12 @@
<com.google.android.material.imageview.ShapeableImageView <com.google.android.material.imageview.ShapeableImageView
android:id="@+id/ivUserImage" android:id="@+id/ivUserImage"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="0dp" android:layout_height="40dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="w,1:1"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent"
......
...@@ -231,6 +231,16 @@ ...@@ -231,6 +231,16 @@
app:nullable="false" /> app:nullable="false" />
</action> </action>
<action
android:id="@+id/to_userDialogFragment"
app:destination="@id/userDialogFragment">
<argument
android:name="userId"
app:argType="string"
app:nullable="false" />
</action>
</dialog> </dialog>
<dialog <dialog
...@@ -267,4 +277,9 @@ ...@@ -267,4 +277,9 @@
app:nullable="false" /> app:nullable="false" />
</dialog> </dialog>
<dialog
android:id="@+id/userDialogFragment"
android:name="org.futo.circles.core.feature.user.UserDialogFragment"
tools:layout="@layout/dialog_fragment_user" />
</navigation> </navigation>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment