Web: Added the ability to remove users from an archived room.

This commit is contained in:
Tatiana Lopaeva 2022-11-28 14:56:01 +03:00
parent 6c7221cfcd
commit 8b2ebb2c09
4 changed files with 89 additions and 44 deletions

View File

@ -49,12 +49,16 @@ class MembersHelper {
};
};
getOptionsByRoomType = (roomType, withDeleteOption = false) => {
getOptionsByRoomType = (
roomType,
canChangeUserRole = false,
canDeleteUser = false
) => {
if (!roomType) return;
const options = this.getOptions();
const deleteOption = withDeleteOption
const deleteOption = canDeleteUser
? [
{ key: "s2", isSeparator: true },
{
@ -65,41 +69,50 @@ class MembersHelper {
]
: [];
let availableOptions = [];
switch (roomType) {
case RoomsType.FillingFormsRoom:
return [
options.roomAdmin,
options.formFiller,
options.viewer,
...deleteOption,
];
if (canChangeUserRole)
availableOptions = [
options.roomAdmin,
options.formFiller,
options.viewer,
];
return [...availableOptions, ...deleteOption];
case RoomsType.EditingRoom:
return [
options.roomAdmin,
options.editor,
options.viewer,
...deleteOption,
];
if (canChangeUserRole)
availableOptions = [
options.roomAdmin,
options.editor,
options.viewer,
];
return [...availableOptions, ...deleteOption];
case RoomsType.ReviewRoom:
return [
options.roomAdmin,
options.reviewer,
options.commentator,
options.viewer,
...deleteOption,
];
if (canChangeUserRole)
availableOptions = [
options.roomAdmin,
options.reviewer,
options.commentator,
options.viewer,
];
return [...availableOptions, ...deleteOption];
case RoomsType.ReadOnlyRoom:
return [options.roomAdmin, options.viewer, ...deleteOption];
if (canChangeUserRole)
availableOptions = [options.roomAdmin, options.viewer];
return [...availableOptions, ...deleteOption];
case RoomsType.CustomRoom:
return [
options.roomAdmin,
options.editor,
options.formFiller,
options.reviewer,
options.commentator,
options.viewer,
...deleteOption,
];
if (canChangeUserRole)
availableOptions = [
options.roomAdmin,
options.editor,
options.formFiller,
options.reviewer,
options.commentator,
options.viewer,
];
return [...availableOptions, ...deleteOption];
}
};

View File

@ -11,10 +11,10 @@ const User = ({
membersHelper,
currentMember,
updateRoomMemberRole,
currCanEditUsers,
selectionParentRoom,
setSelectionParentRoom,
canChangeUserRoleInRoom,
canDeleteUserInRoom,
rootFolderType,
access,
}) => {
@ -24,9 +24,26 @@ const User = ({
const [userIsRemoved, setUserIsRemoved] = useState(false);
if (userIsRemoved) return null;
const canChangeUserRole =
user &&
canChangeUserRoleInRoom({
access,
rootFolderType,
currentUserInList: { id: user.id, access: user.access },
});
const canDeleteUser =
user &&
canDeleteUserInRoom({
access,
rootFolderType,
currentUserInList: { id: user.id, access: user.access },
});
const fullRoomRoleOptions = membersHelper.getOptionsByRoomType(
selectionParentRoom.roomType,
currCanEditUsers
canChangeUserRole,
canDeleteUser
);
const userRole = membersHelper.getOptionByUserAccess(user.access);
@ -67,14 +84,6 @@ const User = ({
}
};
const isCanChangeUserRole =
user &&
canChangeUserRoleInRoom({
access,
rootFolderType,
currentUserInList: { id: user.id, access: user.access },
});
return (
<StyledUser isExpect={isExpect} key={user.id}>
<Avatar
@ -94,7 +103,7 @@ const User = ({
{userRole && userRoleOptions && (
<div className="role-wrapper">
{isCanChangeUserRole ? (
{canChangeUserRole || canDeleteUser ? (
<ComboBox
className="role-combobox"
selectedOption={userRole}

View File

@ -29,7 +29,7 @@ const Members = ({
resendEmailInvitations,
setInvitePanelOptions,
canDeleteUserInRoom,
changeUserType,
canInviteUserInRoom,
canChangeUserRoleInRoom,
@ -156,6 +156,7 @@ const Members = ({
selectionParentRoom={selectionParentRoom}
setSelectionParentRoom={setSelectionParentRoom}
canChangeUserRoleInRoom={canChangeUserRoleInRoom}
canDeleteUserInRoom={canDeleteUserInRoom}
/>
))}
</StyledUserList>
@ -192,6 +193,8 @@ const Members = ({
roomType={selectionParentRoom.roomType}
selectionParentRoom={selectionParentRoom}
setSelectionParentRoom={setSelectionParentRoom}
canDeleteUserInRoom={canDeleteUserInRoom}
canChangeUserRoleInRoom={canChangeUserRoleInRoom}
/>
))}
</StyledUserList>
@ -210,7 +213,11 @@ export default inject(
const { isOwner, isAdmin, id: selfId } = auth.userStore.user;
const { setInvitePanelOptions } = dialogsStore;
const { changeType: changeUserType } = peopleStore;
const { canInviteUserInRoom, canChangeUserRoleInRoom } = accessRightsStore;
const {
canInviteUserInRoom,
canChangeUserRoleInRoom,
canDeleteUserInRoom,
} = accessRightsStore;
return {
selectionParentRoom,
@ -229,6 +236,7 @@ export default inject(
changeUserType,
canInviteUserInRoom,
canChangeUserRoleInRoom,
canDeleteUserInRoom,
};
}
)(

View File

@ -50,7 +50,22 @@ class AccessRightsStore {
return getRoomRoleActions(access).changeUserRole;
};
canDeleteUserInRoom = (room) => {
const { access, currentUserInList, rootFolderType } = room;
const { userStore } = this.authStore;
const { user } = userStore;
const isMyProfile = user.id === currentUserInList.id;
const isOwnerRoleRoom =
currentUserInList.access === ShareAccessRights.FullAccess;
if (isMyProfile || isOwnerRoleRoom) return false;
if (rootFolderType === FolderType.Archive)
return getArchiveRoomRoleActions(access).deleteUsers;
return getRoomRoleActions(access).deleteUsers;
};
canLockFile = (file) => {
const { rootFolderType, access } = file;