diff --git a/apps/web/components/team/MemberChangeRoleModal.tsx b/apps/web/components/team/MemberChangeRoleModal.tsx index e3917899..bd2a11dd 100644 --- a/apps/web/components/team/MemberChangeRoleModal.tsx +++ b/apps/web/components/team/MemberChangeRoleModal.tsx @@ -5,6 +5,7 @@ import React, { SyntheticEvent, useEffect } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import Button from "@calcom/ui/Button"; +import { TeamWithMembers } from "@lib/queries/teams"; import { trpc } from "@lib/trpc"; import ModalContainer from "@components/ui/ModalContainer"; @@ -15,10 +16,11 @@ type MembershipRoleOption = { label?: string; }; -const options: MembershipRoleOption[] = [{ value: "MEMBER" }, { value: "ADMIN" }]; +const options: MembershipRoleOption[] = [{ value: "MEMBER" }, { value: "ADMIN" }, { value: "OWNER" }]; export default function MemberChangeRoleModal(props: { isOpen: boolean; + team: TeamWithMembers; memberId: number; teamId: number; initialRole: MembershipRole; @@ -48,6 +50,8 @@ export default function MemberChangeRoleModal(props: { }, }); + const memberRole = props.team?.membership.role; + function changeRole(e: SyntheticEvent) { e.preventDefault(); @@ -57,7 +61,6 @@ export default function MemberChangeRoleModal(props: { role: role.value, }); } - return ( <> @@ -76,7 +79,7 @@ export default function MemberChangeRoleModal(props: { {/* - needs dialog to confirm change of ownership */} { + const { members } = props.team; + const owners = members.filter((member) => member["role"] === "OWNER"); + return owners.length; + }; + + const useCurrentUser = () => { + const query = useMeQuery(); + const user = query.data; + return user?.id; + }; + + const currentUser = useCurrentUser(); + const name = props.member.name || (() => { @@ -121,8 +136,9 @@ export default function MemberListItem(props: Props) { - {(props.team.membership.role === MembershipRole.OWNER || - props.team.membership.role === MembershipRole.ADMIN) && ( + {((props.team.membership.role === MembershipRole.OWNER && + (props.member.role !== "OWNER" || (ownersInTeam() > 1 && props.member.id === currentUser))) || + (props.team.membership.role === MembershipRole.ADMIN && props.member.role !== "OWNER")) && ( <>