import type { FC } from 'react' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import type { CustomConfigurationModelFixedFields, ModelItem, ModelProvider, } from '../declarations' import { ConfigurationMethodEnum, } from '../declarations' // import Tab from './tab' import AddModelButton from './add-model-button' import ModelListItem from './model-list-item' import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/arrows' import { useModalContextSelector } from '@/context/modal-context' import { useAppContext } from '@/context/app-context' type ModelListProps = { provider: ModelProvider models: ModelItem[] onCollapse: () => void onConfig: (currentCustomConfigurationModelFixedFields?: CustomConfigurationModelFixedFields) => void onChange?: (provider: string) => void } const ModelList: FC = ({ provider, models, onCollapse, onConfig, onChange, }) => { const { t } = useTranslation() const configurativeMethods = provider.configurate_methods.filter(method => method !== ConfigurationMethodEnum.fetchFromRemote) const { isCurrentWorkspaceManager } = useAppContext() const isConfigurable = configurativeMethods.includes(ConfigurationMethodEnum.customizableModel) const setShowModelLoadBalancingModal = useModalContextSelector(state => state.setShowModelLoadBalancingModal) const onModifyLoadBalancing = useCallback((model: ModelItem) => { setShowModelLoadBalancingModal({ provider, model: model!, open: !!model, onClose: () => setShowModelLoadBalancingModal(null), onSave: onChange, }) }, [onChange, provider, setShowModelLoadBalancingModal]) return (
{t('common.modelProvider.modelsNum', { num: models.length })} onCollapse()} > {t('common.modelProvider.collapse')} {/* { isConfigurable && canSystemConfig && ( {}} /> ) } */} { isConfigurable && isCurrentWorkspaceManager && (
onConfig()} />
) }
{ models.map(model => ( )) }
) } export default ModelList