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 ( )} /> 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)