import type { Dispatch, SetStateAction } from 'react' import { memo, useCallback, } from 'react' import { useTranslation } from 'react-i18next' import { RiArrowDownSLine } from '@remixicon/react' import Button from '@/app/components/base/button' import Indicator from '@/app/components/header/indicator' import Authorized from './authorized' import type { Credential, CustomModel, ModelProvider, } from '../declarations' import { ConfigurationMethodEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import cn from '@/utils/classnames' import Tooltip from '@/app/components/base/tooltip' import Badge from '@/app/components/base/badge' type SwitchCredentialInLoadBalancingProps = { provider: ModelProvider model: CustomModel credentials?: Credential[] customModelCredential?: Credential setCustomModelCredential: Dispatch> } const SwitchCredentialInLoadBalancing = ({ provider, model, customModelCredential, setCustomModelCredential, credentials, }: SwitchCredentialInLoadBalancingProps) => { const { t } = useTranslation() const handleItemClick = useCallback((credential: Credential) => { setCustomModelCredential(credential) }, [setCustomModelCredential]) const renderTrigger = useCallback(() => { const selectedCredentialId = customModelCredential?.credential_id const authRemoved = !selectedCredentialId && !!credentials?.length let color = 'green' if (authRemoved && !customModelCredential?.not_allowed_to_use) color = 'red' if (customModelCredential?.not_allowed_to_use) color = 'gray' const Item = ( ) if (customModelCredential?.not_allowed_to_use) { return ( {Item} ) } return Item }, [customModelCredential, t, credentials]) return ( ) } export default memo(SwitchCredentialInLoadBalancing)