import type { DataSourceCredential } from './types' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { memo, useCallback } from 'react' import { useTranslation } from 'react-i18next' import ActionButton from '@/app/components/base/action-button' import { CredentialTypeEnum } from '@/app/components/plugins/plugin-auth/types' type OperatorProps = { credentialItem: DataSourceCredential onAction: (action: string, credentialItem: DataSourceCredential) => void onRename?: () => void canUseCredential?: boolean canManageCredential?: boolean } const Operator = ({ credentialItem, onAction, onRename, canUseCredential = false, canManageCredential = false, }: OperatorProps) => { const { t } = useTranslation() const { type } = credentialItem const handleAction = useCallback( (action: string, allowed: boolean) => { if (!allowed) return queueMicrotask(() => { if (action === 'rename') { onRename?.() return } onAction(action, credentialItem) }) }, [credentialItem, onAction, onRename], ) return ( $['operation.more'], { ns: 'common' })} > } /> handleAction('setDefault', canUseCredential)} >
{t(($) => $['auth.setDefault'], { ns: 'plugin' })}
{type === CredentialTypeEnum.OAUTH2 && ( handleAction('rename', canManageCredential)} >
{t(($) => $['operation.rename'], { ns: 'common' })}
)} {type === CredentialTypeEnum.API_KEY && ( handleAction('edit', canManageCredential)} >
{t(($) => $['operation.edit'], { ns: 'common' })}
)} {type === CredentialTypeEnum.OAUTH2 && ( handleAction('change', canManageCredential)} >
{t(($) => $['dataSource.notion.changeAuthorizedPages'], { ns: 'common' })}
)} handleAction('delete', canManageCredential)} >
{t(($) => $['operation.remove'], { ns: 'common' })}
) } export default memo(Operator)