diff --git a/webapp/channels/src/components/admin_console/system_user_detail/team_list/team_list_dropdown.tsx b/webapp/channels/src/components/admin_console/system_user_detail/team_list/team_list_dropdown.tsx index bdfa48180c..5971466fd5 100644 --- a/webapp/channels/src/components/admin_console/system_user_detail/team_list/team_list_dropdown.tsx +++ b/webapp/channels/src/components/admin_console/system_user_detail/team_list/team_list_dropdown.tsx @@ -1,14 +1,13 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React from 'react'; +import React, {memo, useCallback} from 'react'; +import {useIntl} from 'react-intl'; import EllipsisHorizontalIcon from 'components/widgets/icons/ellipsis_h_icon'; import Menu from 'components/widgets/menu/menu'; import MenuWrapper from 'components/widgets/menu/menu_wrapper'; -import {localizeMessage} from 'utils/utils'; - import type {TeamWithMembership} from './types'; type Props = { @@ -19,66 +18,63 @@ type Props = { isDisabled?: boolean; } -type State = { - serverError: string | null; -} +const TeamListDropdown = ({ + team, + doRemoveUserFromTeam, + doMakeUserTeamAdmin, + doMakeUserTeamMember, + isDisabled, +}: Props) => { + const intl = useIntl(); -export default class TeamListDropdown extends React.PureComponent { - public constructor(props: Props) { - super(props); + const isAdmin = team.scheme_admin; + const isMember = team.scheme_user && !team.scheme_admin; + const isGuest = team.scheme_guest; + const showMakeTeamAdmin = !isAdmin && !isGuest; + const showMakeTeamMember = !isMember && !isGuest; - this.state = { - serverError: null, - }; - } + const makeTeamAdminOnClick = useCallback(() => doMakeUserTeamAdmin(team.id), [team.id, doMakeUserTeamAdmin]); + const makeTeamMemberOnClick = useCallback(() => doMakeUserTeamMember(team.id), [team.id, doMakeUserTeamMember]); + const removeUserTeamOnClick = useCallback(() => doRemoveUserFromTeam(team.id), [team.id, doRemoveUserFromTeam]); - public render(): JSX.Element { - const {team} = this.props; - const isAdmin = team.scheme_admin; - const isMember = team.scheme_user && !team.scheme_admin; - const isGuest = team.scheme_guest; - const showMakeTeamAdmin = !isAdmin && !isGuest; - const showMakeTeamMember = !isMember && !isGuest; - - return ( - + +
+ - - -
- - this.props.doMakeUserTeamAdmin(team.id)} - text={localizeMessage('team_members_dropdown.makeAdmin', 'Make Team Admin')} - /> - this.props.doMakeUserTeamMember(team.id)} - text={localizeMessage('team_members_dropdown.makeMember', 'Make Team Member')} - /> - this.props.doRemoveUserFromTeam(team.id)} - text={localizeMessage('team_members_dropdown.leave_team', 'Remove from Team')} - buttonClass='SystemUserDetail__action-remove-team' - /> - -
- - ); - } -} + + + +
+
+
+ ); +}; + +export default memo(TeamListDropdown);