import { memo, useCallback, useMemo, } from 'react' import { RiAddLine } from '@remixicon/react' import { useTranslation } from 'react-i18next' import { Authorized } from '@/app/components/header/account-setting/model-provider-page/model-auth' import cn from '@/utils/classnames' import type { Credential, CustomModelCredential, ModelCredential, ModelProvider, } from '@/app/components/header/account-setting/model-provider-page/declarations' import { ConfigurationMethodEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import Tooltip from '@/app/components/base/tooltip' type AddCredentialInLoadBalancingProps = { provider: ModelProvider model: CustomModelCredential configurationMethod: ConfigurationMethodEnum modelCredential: ModelCredential onSelectCredential: (credential: Credential) => void onUpdate?: () => void } const AddCredentialInLoadBalancing = ({ provider, model, configurationMethod, modelCredential, onSelectCredential, onUpdate, }: AddCredentialInLoadBalancingProps) => { const { t } = useTranslation() const { available_credentials, } = modelCredential const customModel = configurationMethod === ConfigurationMethodEnum.customizableModel const notAllowCustomCredential = provider.allow_custom_token === false const ButtonComponent = useMemo(() => { const Item = (
{ customModel ? t('common.modelProvider.auth.addCredential') : t('common.modelProvider.auth.addApiKey') }
) if (notAllowCustomCredential) { return ( {Item} ) } return Item }, [notAllowCustomCredential, t, customModel]) const renderTrigger = useCallback((open?: boolean) => { const Item = (
{ customModel ? t('common.modelProvider.auth.addCredential') : t('common.modelProvider.auth.addApiKey') }
) return Item }, [t, customModel]) if (!available_credentials?.length) return ButtonComponent return ( ) } export default memo(AddCredentialInLoadBalancing)