diff --git a/packages/client/src/pages/Home/InfoPanel/Body/views/Members/User.js b/packages/client/src/pages/Home/InfoPanel/Body/views/Members/User.js index 35c20680f6..8dd318409f 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/views/Members/User.js +++ b/packages/client/src/pages/Home/InfoPanel/Body/views/Members/User.js @@ -1,11 +1,71 @@ import React from "react"; -import PropTypes from "prop-types"; + import { StyledUser } from "../../styles/members"; import Avatar from "@docspace/components/avatar"; -import LinkWithDropdown from "@docspace/components/link-with-dropdown"; +import { ComboBox } from "@docspace/components"; -const User = ({ t, user, selfId, isExpect }) => { - if (!user.displayName) return null; +const User = ({ + t, + user, + isOwner, + isAdmin, + selfId, + isExpect, + changeUserType, +}) => { + if (!user.displayName && !user.email) return null; + + const roles = { + admin: { + key: "admin", + title: t("People:Administrator"), + label: t("People:Administrator"), + action: "admin", + }, + manager: { + key: "manager", + title: t("People:Manager"), + label: t("People:Manager"), + action: "manager", + }, + user: { + key: "user", + title: t("Common:User"), + label: t("Common:User"), + action: "user", + }, + }; + + const getUserRole = () => { + if (user.isOwner) return roles.admin; + if (user.isAdmin) return roles.manager; + return roles.user; + }; + + const getUserOptions = () => { + let options = []; + if (isOwner) options.push(roles.admin); + if (isAdmin) options.push(roles.manager); + options.push(roles.user); + return options; + }; + + const getNotAuthorizedToEdit = () => { + if (selfId === user.id) return true; + if (isOwner) return false; + if (!isAdmin) return true; + }; + + const userRole = getUserRole(); + const userOptions = getUserOptions(); + const userNotAuthorizedToEdit = getNotAuthorizedToEdit(); + + const onTypeChange = React.useCallback( + ({ action }) => { + changeUserType(action, [user], t, false); + }, + [user, changeUserType, t] + ); return ( { )}
- {}, - }, - { - key: "key2", - label: "Co-worker", - onClick: function noRefCheck() {}, - }, - { - key: "key3", - label: "Viewer", - onClick: function noRefCheck() {}, - }, - { - isSeparator: true, - key: "key4", - }, - { - key: "key5", - label: "Remove", - onClick: function noRefCheck() {}, - }, - ]} - > - {user.role} - + {userNotAuthorizedToEdit ? ( +
{userRole.label}
+ ) : ( + + )}
); }; -User.propTypes = { user: PropTypes.object }; - export default User;