import { PermissionAction } from '@supabase/shared-types/out/constants'
import { ChevronDown, Mail, UserPlus } from 'lucide-react'
import { useState } from 'react'
import semver from 'semver'
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { IS_PLATFORM } from 'lib/constants'
import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
TooltipContent_Shadcn_,
TooltipTrigger_Shadcn_,
Tooltip_Shadcn_,
} from 'ui'
import CreateUserModal from './CreateUserModal'
import InviteUserModal from './InviteUserModal'
export type AddUserDropdownProps = {
projectKpsVersion?: string
}
const AddUserDropdown = ({ projectKpsVersion }: AddUserDropdownProps) => {
const inviteEnabled = IS_PLATFORM
? semver.gte(
// @ts-ignore
semver.coerce(projectKpsVersion ?? 'kps-v2.5.4'),
semver.coerce('kps-v2.5.3')
)
: true
const canInviteUsers = useCheckPermissions(PermissionAction.AUTH_EXECUTE, 'invite_user')
const canCreateUsers = useCheckPermissions(PermissionAction.AUTH_EXECUTE, 'create_user')
const [inviteVisible, setInviteVisible] = useState(false)
const [createVisible, setCreateVisible] = useState(false)
return (
<>
}>
Add user
{inviteEnabled && (
{
if (canInviteUsers) setInviteVisible(true)
}}
>
Send invitation
{!canInviteUsers && (
You need additional permissions to invite users
)}
)}
{
if (canCreateUsers) setCreateVisible(true)
}}
>
Create new user
{!canCreateUsers && (
You need additional permissions to create users
)}
{inviteEnabled && }
>
)
}
export default AddUserDropdown