Skip to content

Commit 422a7fc

Browse files
AlexTugarevroboquat
authored andcommitted
[teams] inactivate Leave Team action for last team owner
1 parent 7658c52 commit 422a7fc

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

components/dashboard/src/teams/Members.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default function() {
3131
const [ showInviteModal, setShowInviteModal ] = useState<boolean>(false);
3232
const [ searchText, setSearchText ] = useState<string>('');
3333
const [ roleFilter, setRoleFilter ] = useState<TeamMemberRole | undefined>();
34+
const [ leaveTeamEnabled, setLeaveTeamEnabled ] = useState<boolean>(false);
3435

3536
useEffect(() => {
3637
if (!team) {
@@ -46,6 +47,12 @@ export default function() {
4647
})();
4748
}, [ team ]);
4849

50+
useEffect(() => {
51+
const owners = members.filter(m => m.role === "owner");
52+
const isOwner = owners.some(o => o.userId === user?.id);
53+
setLeaveTeamEnabled(!isOwner || owners.length > 1);
54+
}, [ members ]);
55+
4956
const ownMemberInfo = members.find(m => m.userId === user?.id);
5057

5158
const getInviteURL = (inviteId: string) => {
@@ -179,9 +186,9 @@ export default function() {
179186
<span className="flex-grow" />
180187
<ItemFieldContextMenu menuEntries={m.userId === user?.id
181188
? [{
182-
title: 'Leave Team',
183-
customFontStyle: 'text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300',
184-
onClick: () => removeTeamMember(m.userId)
189+
title: leaveTeamEnabled ? 'Leave Team' : 'Remaining owner',
190+
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',
191+
onClick: () => leaveTeamEnabled && removeTeamMember(m.userId)
185192
}]
186193
: (ownMemberInfo?.role === 'owner'
187194
? [{

0 commit comments

Comments
 (0)