@@ -8,17 +8,15 @@ import { toast } from 'sonner'
88import * as z from 'zod'
99
1010import { useParams } from 'common'
11+ import { ButtonTooltip } from 'components/ui/ButtonTooltip'
1112import InformationBox from 'components/ui/InformationBox'
1213import { useOrganizationCreateInvitationMutation } from 'data/organization-members/organization-invitation-create-mutation'
1314import { useOrganizationRolesV2Query } from 'data/organization-members/organization-roles-query'
1415import { useOrganizationMembersQuery } from 'data/organizations/organization-members-query'
1516import { useProjectsQuery } from 'data/projects/projects-query'
1617import { useHasAccessToProjectLevelPermissions } from 'data/subscriptions/org-subscription-query'
17- import {
18- doPermissionsCheck ,
19- useCheckPermissions ,
20- useGetPermissions ,
21- } from 'hooks/misc/useCheckPermissions'
18+ import { doPermissionsCheck , useGetPermissions } from 'hooks/misc/useCheckPermissions'
19+ import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
2220import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
2321import { useProfile } from 'lib/profile'
2422import {
@@ -50,9 +48,6 @@ import {
5048 SelectTrigger_Shadcn_ ,
5149 Select_Shadcn_ ,
5250 Switch ,
53- Tooltip ,
54- TooltipContent ,
55- TooltipTrigger ,
5651 cn ,
5752} from 'ui'
5853import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
@@ -64,6 +59,10 @@ export const InviteMemberButton = () => {
6459 const organization = useSelectedOrganization ( )
6560 const { permissions : permissions } = useGetPermissions ( )
6661
62+ const { organizationMembersCreate : organizationMembersCreationEnabled } = useIsFeatureEnabled ( [
63+ 'organization_members:create' ,
64+ ] )
65+
6766 const [ isOpen , setIsOpen ] = useState ( false )
6867 const [ projectDropdownOpen , setProjectDropdownOpen ] = useState ( false )
6968
@@ -75,10 +74,6 @@ export const InviteMemberButton = () => {
7574 const orgProjects = ( projects ?? [ ] )
7675 . filter ( ( project ) => project . organization_id === organization ?. id )
7776 . sort ( ( a , b ) => a . name . localeCompare ( b . name ) )
78- const canReadSubscriptions = useCheckPermissions (
79- PermissionAction . BILLING_READ ,
80- 'stripe.subscriptions'
81- )
8277
8378 const currentPlan = organization ?. plan
8479 const hasAccessToProjectLevelPermissions = useHasAccessToProjectLevelPermissions ( slug as string )
@@ -96,6 +91,7 @@ export const InviteMemberButton = () => {
9691
9792 const canInviteMembers =
9893 hasOrgRole &&
94+ rolesAddable . length > 0 &&
9995 orgScopedRoles . some ( ( { id : role_id } ) =>
10096 doPermissionsCheck (
10197 permissions ,
@@ -182,22 +178,24 @@ export const InviteMemberButton = () => {
182178 return (
183179 < Dialog open = { isOpen } onOpenChange = { setIsOpen } >
184180 < DialogTrigger asChild >
185- < Tooltip >
186- < TooltipTrigger asChild >
187- < Button
188- disabled = { ! canInviteMembers }
189- className = "pointer-events-auto flex-grow md:flex-grow-0"
190- onClick = { ( ) => setIsOpen ( true ) }
191- >
192- Invite member
193- </ Button >
194- </ TooltipTrigger >
195- { ! canInviteMembers && (
196- < TooltipContent side = "bottom" >
197- You need additional permissions to invite a member to this organization
198- </ TooltipContent >
199- ) }
200- </ Tooltip >
181+ < ButtonTooltip
182+ type = "primary"
183+ disabled = { ! canInviteMembers }
184+ className = "pointer-events-auto flex-grow md:flex-grow-0"
185+ onClick = { ( ) => setIsOpen ( true ) }
186+ tooltip = { {
187+ content : {
188+ side : 'bottom' ,
189+ text : ! organizationMembersCreationEnabled
190+ ? 'Inviting members is currently disabled'
191+ : ! canInviteMembers
192+ ? 'You need additional permissions to invite a member to this organization'
193+ : undefined ,
194+ } ,
195+ } }
196+ >
197+ Invite member
198+ </ ButtonTooltip >
201199 </ DialogTrigger >
202200 < DialogContent size = "medium" >
203201 < DialogHeader >
0 commit comments