Added user deletion option
This commit is contained in:
parent
bb16de4ed9
commit
063bcfc6a7
@ -49,25 +49,47 @@ class MembersHelper {
|
||||
};
|
||||
};
|
||||
|
||||
getOptionsByRoomType = (roomType) => {
|
||||
getOptionsByRoomType = (roomType, withDeleteOption = false) => {
|
||||
if (!roomType) return;
|
||||
|
||||
const options = this.getOptions();
|
||||
|
||||
const deleteOption = withDeleteOption
|
||||
? [
|
||||
{ key: "s2", isSeparator: true },
|
||||
{
|
||||
key: "remove",
|
||||
label: this.t("Translations:Remove"),
|
||||
access: ShareAccessRights.None,
|
||||
},
|
||||
]
|
||||
: [];
|
||||
|
||||
switch (roomType) {
|
||||
case RoomsType.FillingFormsRoom:
|
||||
return [options.roomAdmin, options.formFiller, options.viewer];
|
||||
return [
|
||||
options.roomAdmin,
|
||||
options.formFiller,
|
||||
options.viewer,
|
||||
...deleteOption,
|
||||
];
|
||||
case RoomsType.EditingRoom:
|
||||
return [options.roomAdmin, options.editor, options.viewer];
|
||||
return [
|
||||
options.roomAdmin,
|
||||
options.editor,
|
||||
options.viewer,
|
||||
...deleteOption,
|
||||
];
|
||||
case RoomsType.ReviewRoom:
|
||||
return [
|
||||
options.roomAdmin,
|
||||
options.reviewer,
|
||||
options.commentator,
|
||||
options.viewer,
|
||||
...deleteOption,
|
||||
];
|
||||
case RoomsType.ReadOnlyRoom:
|
||||
return [options.roomAdmin, options.viewer];
|
||||
return [options.roomAdmin, options.viewer, ...deleteOption];
|
||||
case RoomsType.CustomRoom:
|
||||
return [
|
||||
options.roomAdmin,
|
||||
@ -76,6 +98,7 @@ class MembersHelper {
|
||||
options.reviewer,
|
||||
options.commentator,
|
||||
options.viewer,
|
||||
...deleteOption,
|
||||
];
|
||||
}
|
||||
};
|
||||
|
@ -3,7 +3,6 @@ import React, { useState } from "react";
|
||||
import { StyledUser } from "../../styles/members";
|
||||
import Avatar from "@docspace/components/avatar";
|
||||
import { ComboBox } from "@docspace/components";
|
||||
import MembersHelper from "../../helpers/MembersHelper";
|
||||
import { ShareAccessRights } from "@docspace/common/constants";
|
||||
|
||||
const User = ({
|
||||
@ -11,46 +10,57 @@ const User = ({
|
||||
user,
|
||||
isExpect,
|
||||
membersHelper,
|
||||
roomId,
|
||||
roomType,
|
||||
currentMember,
|
||||
updateRoomMemberRole,
|
||||
|
||||
selectionParentRoom,
|
||||
setSelectionParentRoom,
|
||||
}) => {
|
||||
if (!selectionParentRoom) return null;
|
||||
if (!user.displayName && !user.email) return null;
|
||||
|
||||
const fullRoomRoleOptions = membersHelper.getOptionsByRoomType(roomType);
|
||||
const [userIsRemoved, setUserIsRemoved] = useState(false);
|
||||
if (userIsRemoved) return null;
|
||||
|
||||
const [userRole, setUserRole] = useState(
|
||||
membersHelper.getOptionByUserAccess(user.access)
|
||||
);
|
||||
const [userRoleOptions, setUserRoleOptions] = useState(
|
||||
fullRoomRoleOptions.filter((role) => role.key !== userRole.key)
|
||||
const currCanEditUsers =
|
||||
currentMember.isOwner ||
|
||||
currentMember.isAdmin ||
|
||||
currentMember?.access === ShareAccessRights.FullAccess ||
|
||||
currentMember?.access === ShareAccessRights.RoomManager;
|
||||
|
||||
const fullRoomRoleOptions = membersHelper.getOptionsByRoomType(
|
||||
selectionParentRoom.roomType,
|
||||
currCanEditUsers
|
||||
);
|
||||
|
||||
const onRoomRoleChange = (option) => {
|
||||
setUserRole(option);
|
||||
setUserRoleOptions(
|
||||
fullRoomRoleOptions.filter((role) => role.key !== option.key)
|
||||
);
|
||||
const userRole = membersHelper.getOptionByUserAccess(user.access);
|
||||
const userRoleOptions = fullRoomRoleOptions?.filter(
|
||||
(role) => role.key !== userRole.key
|
||||
);
|
||||
|
||||
updateRoomMemberRole(roomId, {
|
||||
invitations: [
|
||||
{
|
||||
id: user.id,
|
||||
access: option.access,
|
||||
},
|
||||
],
|
||||
const onOptionClick = (option) => {
|
||||
updateRoomMemberRole(selectionParentRoom.id, {
|
||||
invitations: [{ id: user.id, access: option.access }],
|
||||
notify: false,
|
||||
sharingMessage: "",
|
||||
});
|
||||
|
||||
if (option.key === "remove") {
|
||||
setUserIsRemoved(true);
|
||||
const inRoomMembers = selectionParentRoom.members.inRoom;
|
||||
const expectedMembers = selectionParentRoom.members.expected;
|
||||
setSelectionParentRoom({
|
||||
...selectionParentRoom,
|
||||
members: {
|
||||
inRoom: inRoomMembers?.filter((m) => m.id !== user.id),
|
||||
expected: expectedMembers?.filter((m) => m.id !== user.id),
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledUser
|
||||
isExpect={isExpect}
|
||||
key={user.id}
|
||||
canEditRole={user.role !== "Owner"}
|
||||
>
|
||||
<StyledUser isExpect={isExpect} key={user.id}>
|
||||
<Avatar
|
||||
role="user"
|
||||
className="avatar"
|
||||
@ -68,14 +78,12 @@ const User = ({
|
||||
|
||||
{userRole && userRoleOptions && (
|
||||
<div className="role-wrapper">
|
||||
{(currentMember?.access === ShareAccessRights.FullAccess ||
|
||||
currentMember?.access === ShareAccessRights.RoomManager) &&
|
||||
currentMember.id !== user.id ? (
|
||||
{currCanEditUsers && currentMember.id !== user.id ? (
|
||||
<ComboBox
|
||||
className="role-combobox"
|
||||
selectedOption={userRole}
|
||||
options={userRoleOptions}
|
||||
onSelect={onRoomRoleChange}
|
||||
onSelect={onOptionClick}
|
||||
scaled={false}
|
||||
withBackdrop={false}
|
||||
size="content"
|
||||
|
@ -12,7 +12,6 @@ import { ShareAccessRights } from "@docspace/common/constants";
|
||||
import IconButton from "@docspace/components/icon-button";
|
||||
import Text from "@docspace/components/text";
|
||||
import User from "./User";
|
||||
import { getAccessOptions } from "@docspace/client/src/components/panels/InvitePanel/utils";
|
||||
import MembersHelper from "../../helpers/MembersHelper";
|
||||
|
||||
const Members = ({
|
||||
@ -140,6 +139,8 @@ const Members = ({
|
||||
updateRoomMemberRole={updateRoomMemberRole}
|
||||
roomId={selectionParentRoom.id}
|
||||
roomType={selectionParentRoom.roomType}
|
||||
selectionParentRoom={selectionParentRoom}
|
||||
setSelectionParentRoom={setSelectionParentRoom}
|
||||
/>
|
||||
))}
|
||||
</StyledUserList>
|
||||
@ -170,6 +171,8 @@ const Members = ({
|
||||
updateRoomMemberRole={updateRoomMemberRole}
|
||||
roomId={selectionParentRoom.id}
|
||||
roomType={selectionParentRoom.roomType}
|
||||
selectionParentRoom={selectionParentRoom}
|
||||
setSelectionParentRoom={setSelectionParentRoom}
|
||||
/>
|
||||
))}
|
||||
</StyledUserList>
|
||||
|
Loading…
Reference in New Issue
Block a user