From 0bf3d824269ed8953ac4a137fbe735cb1f2cbb92 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 6 Mar 2024 18:08:36 +0200 Subject: [PATCH] Disable changing access level for Circle --- .../core/feature/room/create/CreateRoomDialogFragment.kt | 2 ++ .../room/manage_members/ManageMembersDialogFragment.kt | 7 ++++++- .../feature/room/manage_members/list/MemberViewHolder.kt | 5 +++-- .../feature/room/manage_members/list/MembersListAdapter.kt | 4 +++- .../core/feature/room/update/UpdateRoomDialogFragment.kt | 2 ++ .../org/futo/circles/core/view/ManageMembersOptionsView.kt | 7 ++++++- 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt index 340a2eee1..cfea5392d 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt @@ -84,7 +84,9 @@ class CreateRoomDialogFragment : createRoom() startLoading(btnCreate) } + tvRoleHeader.setIsVisible(!isCircle) spUserRole.apply { + setIsVisible(!isCircle) adapter = circleTypeAdapter setSelection(AccessLevel.User.ordinal) } diff --git a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/ManageMembersDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/ManageMembersDialogFragment.kt index 72e0d1040..3f3079e7e 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/ManageMembersDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/ManageMembersDialogFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.DividerItemDecoration import dagger.hilt.android.AndroidEntryPoint import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment @@ -17,8 +18,10 @@ import org.futo.circles.core.extensions.observeResponse import org.futo.circles.core.extensions.withConfirmation import org.futo.circles.core.feature.room.manage_members.change_role.ChangeAccessLevelListener import org.futo.circles.core.feature.room.manage_members.list.GroupMembersListAdapter +import org.futo.circles.core.feature.room.share.ShareRoomDialogFragmentArgs import org.futo.circles.core.model.BanUser import org.futo.circles.core.model.CancelInvite +import org.futo.circles.core.model.CircleRoomTypeArg import org.futo.circles.core.model.RemoveRoomUser import org.futo.circles.core.model.ResendInvite import org.futo.circles.core.model.UnbanUser @@ -30,6 +33,7 @@ class ManageMembersDialogFragment : BaseFullscreenDialogFragment(DialogFragmentManageMembersBinding::inflate), ManageMembersOptionsListener, ChangeAccessLevelListener { + private val args: ManageMembersDialogFragmentArgs by navArgs() private val viewModel by viewModels<ManageMembersViewModel>() private val membersListAdapter by lazy { @@ -41,7 +45,8 @@ class ManageMembersDialogFragment : findNavController().navigateSafe( ManageMembersDialogFragmentDirections.toUserDialogFragment(it) ) - } + }, + isChangeAccessLevelAvailable = args.type != CircleRoomTypeArg.Circle ) } diff --git a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MemberViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MemberViewHolder.kt index e4f1fe443..506cf68f3 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MemberViewHolder.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MemberViewHolder.kt @@ -32,7 +32,8 @@ class MemberViewHolder( parent: ViewGroup, private val onOpenUserClicked: (Int) -> Unit, private val onToggleClicked: (Int) -> Unit, - private val manageMembersListener: ManageMembersOptionsListener + private val manageMembersListener: ManageMembersOptionsListener, + private val isChangeAccessLevelAvailable: Boolean ) : ManageMembersViewHolder(inflate(parent, ListItemMemberBinding::inflate)) { private companion object : ViewBindingHolder @@ -58,7 +59,7 @@ class MemberViewHolder( with(optionsView) { setListener(manageMembersListener) setIsVisible(data.isOptionsOpened) - setData(data.id, data.powerLevelsContent) + setData(data.id, data.powerLevelsContent, isChangeAccessLevelAvailable) } } else { ivOptionsArrow.gone() diff --git a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MembersListAdapter.kt b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MembersListAdapter.kt index 4241e6132..ea98a64df 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MembersListAdapter.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/list/MembersListAdapter.kt @@ -15,6 +15,7 @@ class GroupMembersListAdapter( private val manageMembersListener: ManageMembersOptionsListener, private val onToggleOptions: (String) -> Unit, private val onOpenUserPage: (String) -> Unit, + private val isChangeAccessLevelAvailable: Boolean ) : BaseRvAdapter<ManageMembersListItem, ManageMembersViewHolder>( DefaultIdEntityCallback() ) { @@ -33,7 +34,8 @@ class GroupMembersListAdapter( parent = parent, onToggleClicked = { position -> onToggleOptions(getItem(position).id) }, onOpenUserClicked = { position -> onOpenUserPage(getItem(position).id) }, - manageMembersListener = manageMembersListener + manageMembersListener = manageMembersListener, + isChangeAccessLevelAvailable = isChangeAccessLevelAvailable ) ManageGroupMembersViewTypes.Invited -> InvitedMemberViewHolder( diff --git a/core/src/main/java/org/futo/circles/core/feature/room/update/UpdateRoomDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/update/UpdateRoomDialogFragment.kt index 5c3dffc59..bd1394852 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/update/UpdateRoomDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/update/UpdateRoomDialogFragment.kt @@ -93,7 +93,9 @@ class UpdateRoomDialogFragment : ) startLoading(btnSave) } + tvRoleHeader.setIsVisible(!isCircle) spUserRole.apply { + setIsVisible(!isCircle) adapter = circleTypeAdapter onItemSelectedListener = object : OnItemSelectedListener { override fun onItemSelected( diff --git a/core/src/main/java/org/futo/circles/core/view/ManageMembersOptionsView.kt b/core/src/main/java/org/futo/circles/core/view/ManageMembersOptionsView.kt index 828641197..8b79ea0ad 100644 --- a/core/src/main/java/org/futo/circles/core/view/ManageMembersOptionsView.kt +++ b/core/src/main/java/org/futo/circles/core/view/ManageMembersOptionsView.kt @@ -45,12 +45,17 @@ class ManageMembersOptionsView( listener = callback } - fun setData(userId: String, powerLevelsContent: PowerLevelsContent) { + fun setData( + userId: String, + powerLevelsContent: PowerLevelsContent, + isAccessLevelAvailable: Boolean + ) { this.userId = userId this.powerLevelsContent = powerLevelsContent with(binding) { btnChangeAccessLevel.setIsVisible( powerLevelsContent.isCurrentUserAbleToChangeLevelFor(userId) + && isAccessLevelAvailable ) btnRemove.setIsVisible(powerLevelsContent.isCurrentUserAbleToKick()) btnBan.setIsVisible(powerLevelsContent.isCurrentUserAbleToBan()) -- GitLab