import type { FC } from 'react' import { useTranslation } from 'react-i18next' import type { DefaultModel, Model, ModelItem, } from '../declarations' import { useLanguage, useUpdateModelList, useUpdateModelProviders, } from '../hooks' import ModelIcon from '../model-icon' import ModelName from '../model-name' import { ConfigurationMethodEnum, MODEL_STATUS_TEXT, ModelStatusEnum, } from '../declarations' import { Check } from '@/app/components/base/icons/src/vender/line/general' import { useModalContext } from '@/context/modal-context' import { useProviderContext } from '@/context/provider-context' import Tooltip from '@/app/components/base/tooltip' type PopupItemProps = { defaultModel?: DefaultModel model: Model onSelect: (provider: string, model: ModelItem) => void } const PopupItem: FC = ({ defaultModel, model, onSelect, }) => { const { t } = useTranslation() const language = useLanguage() const { setShowModelModal } = useModalContext() const { modelProviders } = useProviderContext() const updateModelList = useUpdateModelList() const updateModelProviders = useUpdateModelProviders() const currentProvider = modelProviders.find(provider => provider.provider === model.provider)! const handleSelect = (provider: string, modelItem: ModelItem) => { if (modelItem.status !== ModelStatusEnum.active) return onSelect(provider, modelItem) } const handleOpenModelModal = () => { setShowModelModal({ payload: { currentProvider, currentConfigurationMethod: ConfigurationMethodEnum.predefinedModel, }, onSaveCallback: () => { updateModelProviders() const modelType = model.models[0].model_type if (modelType) updateModelList(modelType) }, }) } return (
{model.label[language] || model.label.en_US}
{ model.models.map(modelItem => (
handleSelect(model.provider, modelItem)} > { defaultModel?.model === modelItem.model && defaultModel.provider === currentProvider.provider && ( ) } { modelItem.status === ModelStatusEnum.noConfigure && (
{t('common.operation.add').toLocaleUpperCase()}
) }
)) }
) } export default PopupItem