import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, App, Select } from 'antd'; import { useTranslation } from 'react-i18next'; import type { CustomModelForm, ModelPlazaItem, CustomModelModalRef, CustomModelModalProps } from '../types'; import RbModal from '@/components/RbModal' import CustomSelect from '@/components/CustomSelect' import UploadImages from '@/components/Upload/UploadImages' import { updateCustomModel, addCustomModel, modelTypeUrl, modelProviderUrl } from '@/api/models' import { getFileLink } from '@/api/fileStorage' const CustomModelModal = forwardRef(({ refresh }, ref) => { const { t } = useTranslation(); const { message } = App.useApp(); const [visible, setVisible] = useState(false); const [model, setModel] = useState({} as ModelPlazaItem); const [isEdit, setIsEdit] = useState(false); const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const formValues = Form.useWatch([], form) const handleClose = () => { setModel({} as ModelPlazaItem); form.resetFields(); setLoading(false) setVisible(false); }; const handleOpen = (model?: ModelPlazaItem) => { if (model) { setIsEdit(true); setModel(model); form.setFieldsValue({ ...model, }); } else { setIsEdit(false); form.resetFields(); } setVisible(true); }; const handleSave = () => { form .validateFields() .then((values) => { setLoading(true) values.is_official = false; const logo = values.logo as any; if (typeof logo === 'object') { getFileLink(logo?.response?.data.file_id).then(res => { const logoRes = res as { url: string } values.logo = logoRes.url.replace('http://127.0.0.1:8000', 'https://devmemorybear.redbearai.com') addCustomModel(values).then(() => { if (refresh) { refresh(); } handleClose() message.success(isEdit ? t('common.updateSuccess') : t('common.createSuccess')) }) .catch(() => { setLoading(false) }); }) } else { updateCustomModel(model.id, values).then(() => { if (refresh) { refresh(); } handleClose() message.success(isEdit ? t('common.updateSuccess') : t('common.createSuccess')) }) .catch(() => { setLoading(false) }); } }) .catch((err) => { console.log('err', err) }); } useImperativeHandle(ref, () => ({ handleOpen, })); console.log('formValues', formValues) return (
{!isEdit && } items.map((item) => ({ label: t(`modelNew.${item}`), value: String(item) }))} /> items.map((item) => ({ label: t(`modelNew.${item}`), value: String(item) }))} />