From 27830c743f05ac37bd0fe3518c46ec6c0da9b7c7 Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Mon, 1 Nov 2021 09:55:17 +0000 Subject: [PATCH] [teams] inactivate Leave Team action for last team owner --- components/dashboard/src/teams/Members.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/components/dashboard/src/teams/Members.tsx b/components/dashboard/src/teams/Members.tsx index 1c1bbab950e5cc..1a91123f950bcf 100644 --- a/components/dashboard/src/teams/Members.tsx +++ b/components/dashboard/src/teams/Members.tsx @@ -31,6 +31,7 @@ export default function() { const [ showInviteModal, setShowInviteModal ] = useState(false); const [ searchText, setSearchText ] = useState(''); const [ roleFilter, setRoleFilter ] = useState(); + const [ leaveTeamEnabled, setLeaveTeamEnabled ] = useState(false); useEffect(() => { if (!team) { @@ -46,6 +47,12 @@ export default function() { })(); }, [ team ]); + useEffect(() => { + const owners = members.filter(m => m.role === "owner"); + const isOwner = owners.some(o => o.userId === user?.id); + setLeaveTeamEnabled(!isOwner || owners.length > 1); + }, [ members ]); + const ownMemberInfo = members.find(m => m.userId === user?.id); const getInviteURL = (inviteId: string) => { @@ -179,9 +186,9 @@ export default function() { removeTeamMember(m.userId) + title: leaveTeamEnabled ? 'Leave Team' : 'Remaining owner', + customFontStyle: leaveTeamEnabled ? 'text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300' : 'text-gray-400 dark:text-gray-200', + onClick: () => leaveTeamEnabled && removeTeamMember(m.userId) }] : (ownMemberInfo?.role === 'owner' ? [{