/* * @Author: ZhaoYing * @Date: 2026-02-03 15:52:44 * @Last Modified by: ZhaoYing * @Last Modified time: 2026-02-03 15:54:22 */ import { forwardRef, useImperativeHandle, useState } from 'react'; import { Switch, Button, Tooltip } from 'antd'; import clsx from 'clsx'; import { useTranslation } from 'react-i18next'; import type { ApiKey, ApiKeyModalRef } from '../types'; import RbModal from '@/components/RbModal' import { getApiKey } from '@/api/apiKey'; import { formatDateTime } from '@/utils/format' import Tag from '@/components/Tag' import { maskApiKeys } from '@/utils/apiKeyReplacer'; /** * Modal component for viewing API key details * Displays read-only information about an API key */ const ApiKeyDetailModal = forwardRef void }>(({ handleCopy }, ref) => { // Hooks const { t } = useTranslation(); // State const [visible, setVisible] = useState(false); const [data, setData] = useState({} as ApiKey) /** * Close the modal */ const handleClose = () => { setVisible(false); }; /** * Open modal and fetch API key details * @param apiKey - API key item to view */ const handleOpen = (apiKey?: ApiKey) => { if (apiKey?.id) { getApiKey(apiKey.id) .then((res) => { setVisible(true); setData(res as ApiKey) }) } }; /** * Expose methods to parent component via ref */ useImperativeHandle(ref, () => ({ handleOpen, handleClose })); return (
{t('apiKey.baseInfo')}
{['id', 'name', 'is_expired', 'created_at'].map((key, index) => (
{t(`apiKey.${key}`)} { key === 'created_at' ? formatDateTime(data[key], 'YYYY-MM-DD HH:mm:ss') : key === 'is_expired' ? {data[key] ? t('apiKey.inactive') : t('apiKey.active')} : {String(data[key as keyof ApiKey])} }
))}
{maskApiKeys(data.api_key)}
{t('apiKey.permissionInfo')}
{t(`apiKey.memoryEngine`)}
{t(`apiKey.knowledgeBase`)}
{/* 高级设置 */} {data.expires_at && <>
{t('apiKey.advancedSettings')}
{t(`apiKey.expires_at`)} {data.expires_at ? formatDateTime(data.expires_at as number, 'YYYY-MM-DD HH:mm:ss') : '-'}
}
); }); export default ApiKeyDetailModal;