import { useState, useImperativeHandle, forwardRef } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Space, App, Flex, Tooltip, Divider } from 'antd' import { UsergroupAddOutlined } from '@ant-design/icons'; import type { ModelPlaza, ModelPlazaItem, ModelSquareDetailRef } from '../types'; import RbDrawer from '@/components/RbDrawer'; import { getModelPlaza, addModelPlaza } from '@/api/models' import RbCard from '@/components/RbCard/Card' import Tag from '@/components/Tag'; import PageEmpty from '@/components/Empty/PageEmpty'; import { getLogoUrl } from '../utils' interface ModelSquareDetailProps { refresh: () => void; handleEdit: (vo: ModelPlazaItem) => void; } const ModelSquareDetail = forwardRef(({ refresh, handleEdit }, ref) => { const { t } = useTranslation(); const { message } = App.useApp() const [model, setModel] = useState({} as ModelPlaza) const [open, setOpen] = useState(false); const [list, setList] = useState([]) const handleOpen = (vo: ModelPlaza) => { setModel(vo) setOpen(true) getList(vo) } const handleClose = () => { setOpen(false) refresh() } const getList = (vo: ModelPlaza) => { getModelPlaza({ provider: vo.provider }) .then(res => { const response = res as ModelPlaza[] setList(response.length > 0 ? response[0].models : []) }) } const handleAdd = (item: ModelPlazaItem) => { addModelPlaza(item.id) .then(() => { message.success(`${item.name}${t('modelNew.addSuccess')}`) getList(model) }) } useImperativeHandle(ref, () => ({ handleOpen, })); return ( {t(`modelNew.${model.provider}`)} {t('modelNew.modelList')} ({list.length}{t('modelNew.item')})} open={open} onClose={handleClose} >
{list.length === 0 ? :
{list.map(item => ( {t(`modelNew.${item.type}`)} {item.is_official && {t(`modelNew.official`)}} } avatarUrl={getLogoUrl(item.logo)} avatar={
{item.name[0]}
} bodyClassName="rb:relative rb:pb-[80px]! rb:h-[calc(100%-64px)]!" >
{item.description}
{item.tags.map((tag, tagIndex) => {tag})}
{item.add_count} {!item.is_official && } {item.is_added ? : }
))}
}
); }); export default ModelSquareDetail;