From b1379fcc483356c179c023f5894b31a0002b4828 Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Thu, 21 Aug 2025 11:17:49 +0800 Subject: [PATCH] fix: modal title --- .../model-provider-page/model-icon/index.tsx | 6 +- .../model-provider-page/model-modal/index.tsx | 83 +++++++++++++++++-- web/i18n/en-US/common.ts | 5 ++ web/i18n/zh-Hans/common.ts | 5 ++ 4 files changed, 89 insertions(+), 10 deletions(-) diff --git a/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx index f6fb1dc6f6..02c7c404ab 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx @@ -13,12 +13,14 @@ type ModelIconProps = { provider?: Model | ModelProvider modelName?: string className?: string + iconClassName?: string isDeprecated?: boolean } const ModelIcon: FC = ({ provider, className, modelName, + iconClassName, isDeprecated = false, }) => { const language = useLanguage() @@ -34,7 +36,7 @@ const ModelIcon: FC = ({ if (provider?.icon_small) { return (
- model-icon + model-icon
) } @@ -44,7 +46,7 @@ const ModelIcon: FC = ({ 'flex h-5 w-5 items-center justify-center rounded-md border-[0.5px] border-components-panel-border-subtle bg-background-default-subtle', className, )}> -
+
diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx index 39b26246fc..c655c6f294 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx @@ -2,8 +2,10 @@ import type { FC } from 'react' import { memo, useCallback, + useMemo, useRef, } from 'react' +import { RiCloseLine } from '@remixicon/react' import { useTranslation } from 'react-i18next' import type { CustomConfigurationModelFixedFields, @@ -40,6 +42,9 @@ import { useAuth, useCredentialData, } from '@/app/components/header/account-setting/model-provider-page/model-auth/hooks' +import ModelIcon from '@/app/components/header/account-setting/model-provider-page/model-icon' +import Badge from '@/app/components/base/badge' +import { useRenderI18nObject } from '@/hooks/use-i18n' type ModelModalProps = { provider: ModelProvider @@ -62,6 +67,7 @@ const ModelModal: FC = ({ credential, isModelCredential, }) => { + const renderI18nObject = useRenderI18nObject() const providerFormSchemaPredefined = configurateMethod === ConfigurationMethodEnum.predefinedModel const { isLoading, @@ -124,19 +130,80 @@ const ModelModal: FC = ({ } }, [handleSaveCredential, credential?.credential_id, model]) - const renderTitlePrefix = () => { - const prefix = isEditMode ? t('common.operation.setup') : t('common.operation.add') - return `${prefix} ${provider.label[language] || provider.label.en_US}` - } + const modalTitle = useMemo(() => { + if (!providerFormSchemaPredefined && !model) { + return ( +
+ +
+
{t('common.modelProvider.auth.apiKeyModal.addModel')}
+
{renderI18nObject(provider.label)}
+
+
+ ) + } + let label = t('common.modelProvider.auth.apiKeyModal.title') + + if (model) + label = t('common.modelProvider.auth.addModelCredential') + + return ( +
+ {label} +
+ ) + }, [providerFormSchemaPredefined, t, model, renderI18nObject]) + + const modalDesc = useMemo(() => { + if (providerFormSchemaPredefined) { + return ( +
+ {t('common.modelProvider.auth.apiKeyModal.desc')} +
+ ) + } + + return null + }, [providerFormSchemaPredefined, t]) + + const modalModel = useMemo(() => { + if (model) { + return ( +
+ +
{model.model}
+ {model.model_type} +
+ ) + } + + return null + }, [model, provider]) return (
-
-
-
-
{renderTitlePrefix()}
+
+
+ +
+
+
+ {modalTitle} + {modalDesc} + {modalModel}
diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts index f4622c3068..8cbc05d1f4 100644 --- a/web/i18n/en-US/common.ts +++ b/web/i18n/en-US/common.ts @@ -503,6 +503,11 @@ const translation = { specifyModelCredentialTip: 'Use a configured model credential.', providerManaged: 'Provider managed', providerManagedTip: 'The current configuration is hosted by the provider.', + apiKeyModal: { + title: 'API Key Authorization Configuration', + desc: 'After configuring credentials, all members within the workspace can use this model when orchestrating applications.', + addModel: 'Add model', + }, }, }, dataSource: { diff --git a/web/i18n/zh-Hans/common.ts b/web/i18n/zh-Hans/common.ts index fcbf825bbc..8d24aa264e 100644 --- a/web/i18n/zh-Hans/common.ts +++ b/web/i18n/zh-Hans/common.ts @@ -503,6 +503,11 @@ const translation = { specifyModelCredentialTip: '使用已配置的模型凭据。', providerManaged: '由模型供应商管理', providerManagedTip: '使用模型供应商提供的单组凭据。', + apiKeyModal: { + title: 'API 密钥授权配置', + desc: '配置凭据后,工作空间中的所有成员都可以在编排应用时使用此模型。', + addModel: '添加模型', + }, }, }, dataSource: {