import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, App, Button } from 'antd'; import { useTranslation } from 'react-i18next'; import type { ModelListItem, MultiKeyForm, MultiKeyConfigModalRef, MultiKeyConfigModalProps } from '../types'; import RbModal from '@/components/RbModal' import { addModelApiKey, deleteModelApiKey, getModelInfo } from '@/api/models' const MultiKeyConfigModal = forwardRef(({ refresh }, ref) => { const { t } = useTranslation(); const { message } = App.useApp(); const [visible, setVisible] = useState(false); const [model, setModel] = useState({} as ModelListItem); const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const handleClose = () => { setModel({} as ModelListItem); refresh?.() form.resetFields(); setLoading(false) setVisible(false); }; const handleOpen = (vo: ModelListItem) => { setVisible(true); getData(vo) }; const getData = (vo: ModelListItem) => { if (!vo.id) return getModelInfo(vo?.id) .then(res => { setModel(res as ModelListItem) }) } const handleSave = () => { form .validateFields() .then((values) => { setLoading(true) addModelApiKey(model.id, { ...values, model_config_id: model.id, model_name: model.name, provider: model.provider, }).then(() => { message.success(t('common.saveSuccess')) form.resetFields(); getData(model) }) .catch(() => { setLoading(false) }); }) .catch((err) => { console.log('err', err) }); } const handleDelete = (api_key_id: string) => { deleteModelApiKey(api_key_id) .then(() => { message.success(t('common.deleteSuccess')) getData(model) }) } useImperativeHandle(ref, () => ({ handleOpen, })); return ( {model.api_keys && model.api_keys.length > 0 && (
{model.api_keys.map((key) => (
{key.api_key}
{key.api_base}
))}
)}
); }); export default MultiKeyConfigModal;