Web: Added the ability to remove users from an archived room.
This commit is contained in:
parent
6c7221cfcd
commit
8b2ebb2c09
@ -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];
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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,
|
||||
};
|
||||
}
|
||||
)(
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user