| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import {
- memo,
- useCallback,
- } from 'react'
- import { useTranslation } from 'react-i18next'
- import {
- RiEqualizer2Line,
- } from '@remixicon/react'
- import {
- Button,
- } from '@/app/components/base/button'
- import type {
- CustomConfigurationModelFixedFields,
- ModelProvider,
- } from '@/app/components/header/account-setting/model-provider-page/declarations'
- import { ConfigurationMethodEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
- import Authorized from './authorized'
- import { useCredentialStatus } from './hooks'
- import Tooltip from '@/app/components/base/tooltip'
-
- type ConfigProviderProps = {
- provider: ModelProvider,
- currentCustomConfigurationModelFixedFields?: CustomConfigurationModelFixedFields,
- }
- const ConfigProvider = ({
- provider,
- currentCustomConfigurationModelFixedFields,
- }: ConfigProviderProps) => {
- const { t } = useTranslation()
- const {
- hasCredential,
- authorized,
- current_credential_id,
- current_credential_name,
- available_credentials,
- } = useCredentialStatus(provider)
- const notAllowCustomCredential = provider.allow_custom_token === false
-
- const renderTrigger = useCallback(() => {
- const Item = (
- <Button
- className='grow'
- size='small'
- variant={!authorized ? 'secondary-accent' : 'secondary'}
- >
- <RiEqualizer2Line className='mr-1 h-3.5 w-3.5' />
- {hasCredential && t('common.operation.config')}
- {!hasCredential && t('common.operation.setup')}
- </Button>
- )
- if (notAllowCustomCredential && !hasCredential) {
- return (
- <Tooltip
- asChild
- popupContent={t('plugin.auth.credentialUnavailable')}
- >
- {Item}
- </Tooltip>
- )
- }
- return Item
- }, [authorized, hasCredential, notAllowCustomCredential, t])
-
- return (
- <Authorized
- provider={provider}
- configurationMethod={ConfigurationMethodEnum.predefinedModel}
- currentCustomConfigurationModelFixedFields={currentCustomConfigurationModelFixedFields}
- items={[
- {
- title: t('common.modelProvider.auth.apiKeys'),
- credentials: available_credentials ?? [],
- selectedCredential: {
- credential_id: current_credential_id ?? '',
- credential_name: current_credential_name ?? '',
- },
- },
- ]}
- showItemSelectedIcon
- showModelTitle
- renderTrigger={renderTrigger}
- triggerOnlyOpenModal={!hasCredential && !notAllowCustomCredential}
- />
- )
- }
-
- export default memo(ConfigProvider)
|