import type { CredentialPermission } from '@/models/permission' import { Avatar } from '@langgenius/dify-ui/avatar' import { cn } from '@langgenius/dify-ui/cn' import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRadioItemIndicator, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { useSuspenseQuery } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { userProfileQueryOptions } from '@/features/account-profile/client' import { PermissionLevel } from '@/models/permission' type PermissionSelectorProps = { disabled?: boolean permission: CredentialPermission onChange: (permission: CredentialPermission) => void } const PermissionSelector = ({ disabled, permission, onChange }: PermissionSelectorProps) => { const { t } = useTranslation() const { data: userProfile } = useSuspenseQuery({ ...userProfileQueryOptions(), select: (data) => data.profile, }) const isOnlyMe = permission === PermissionLevel.onlyMe const isAllTeamMembers = permission === PermissionLevel.allTeamMembers const permissionLabel = t(($) => $['auth.whoCanUse'], { ns: 'plugin' }) const onlyMeLabel = t(($) => $['form.permissionsOnlyMe'], { ns: 'datasetSettings' }) const allTeamMembersLabel = t(($) => $['form.permissionsAllMember'], { ns: 'datasetSettings', }) const selectedPermissionLabel = isOnlyMe ? onlyMeLabel : allTeamMembersLabel return ( {isOnlyMe && ( <>
{onlyMeLabel}
)} {isAllTeamMembers && ( <>
{allTeamMembersLabel}
)}
value={permission} onValueChange={onChange} aria-label={permissionLabel} > aria-label={onlyMeLabel} value={PermissionLevel.onlyMe} closeOnClick className="touch-manipulation" >
{onlyMeLabel}
aria-label={allTeamMembersLabel} value={PermissionLevel.allTeamMembers} closeOnClick className="touch-manipulation" >
{allTeamMembersLabel}
) } export default PermissionSelector