From c8f09515042e186fa76813452ae636ec52d8fc31 Mon Sep 17 00:00:00 2001 From: twwu Date: Tue, 22 Jul 2025 23:28:33 +0800 Subject: [PATCH] refactor: optimize locale setting by removing unnecessary async/await and restructuring language resource loading --- .../[appId]/overview/tracing/panel.tsx | 66 ++++++++++------ .../account-setting/language-page/index.tsx | 2 +- web/app/components/i18n.tsx | 12 +-- .../plugins/base/deprecation-notice.tsx | 4 +- web/app/signin/_header.tsx | 4 +- web/app/signin/invite-settings/page.tsx | 2 +- web/context/i18n.ts | 6 +- web/i18n/i18next-config.ts | 76 +++++++++++-------- web/i18n/index.ts | 2 +- web/utils/format.ts | 4 - 10 files changed, 98 insertions(+), 80 deletions(-) diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx index 8bf18904be..d082523222 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx @@ -83,27 +83,50 @@ const Panel: FC = () => { const hasConfiguredTracing = !!(langSmithConfig || langFuseConfig || opikConfig || weaveConfig || arizeConfig || phoenixConfig || aliyunConfig) const fetchTracingConfig = async () => { - const { tracing_config: arizeConfig, has_not_configured: arizeHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.arize }) - if (!arizeHasNotConfig) - setArizeConfig(arizeConfig as ArizeConfig) - const { tracing_config: phoenixConfig, has_not_configured: phoenixHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.phoenix }) - if (!phoenixHasNotConfig) - setPhoenixConfig(phoenixConfig as PhoenixConfig) - const { tracing_config: langSmithConfig, has_not_configured: langSmithHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.langSmith }) - if (!langSmithHasNotConfig) - setLangSmithConfig(langSmithConfig as LangSmithConfig) - const { tracing_config: langFuseConfig, has_not_configured: langFuseHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.langfuse }) - if (!langFuseHasNotConfig) - setLangFuseConfig(langFuseConfig as LangFuseConfig) - const { tracing_config: opikConfig, has_not_configured: OpikHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.opik }) - if (!OpikHasNotConfig) - setOpikConfig(opikConfig as OpikConfig) - const { tracing_config: weaveConfig, has_not_configured: weaveHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.weave }) - if (!weaveHasNotConfig) - setWeaveConfig(weaveConfig as WeaveConfig) - const { tracing_config: aliyunConfig, has_not_configured: aliyunHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.aliyun }) - if (!aliyunHasNotConfig) - setAliyunConfig(aliyunConfig as AliyunConfig) + const getArizeConfig = async () => { + const { tracing_config: arizeConfig, has_not_configured: arizeHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.arize }) + if (!arizeHasNotConfig) + setArizeConfig(arizeConfig as ArizeConfig) + } + const getPhoenixConfig = async () => { + const { tracing_config: phoenixConfig, has_not_configured: phoenixHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.phoenix }) + if (!phoenixHasNotConfig) + setPhoenixConfig(phoenixConfig as PhoenixConfig) + } + const getLangSmithConfig = async () => { + const { tracing_config: langSmithConfig, has_not_configured: langSmithHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.langSmith }) + if (!langSmithHasNotConfig) + setLangSmithConfig(langSmithConfig as LangSmithConfig) + } + const getLangFuseConfig = async () => { + const { tracing_config: langFuseConfig, has_not_configured: langFuseHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.langfuse }) + if (!langFuseHasNotConfig) + setLangFuseConfig(langFuseConfig as LangFuseConfig) + } + const getOpikConfig = async () => { + const { tracing_config: opikConfig, has_not_configured: OpikHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.opik }) + if (!OpikHasNotConfig) + setOpikConfig(opikConfig as OpikConfig) + } + const getWeaveConfig = async () => { + const { tracing_config: weaveConfig, has_not_configured: weaveHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.weave }) + if (!weaveHasNotConfig) + setWeaveConfig(weaveConfig as WeaveConfig) + } + const getAliyunConfig = async () => { + const { tracing_config: aliyunConfig, has_not_configured: aliyunHasNotConfig } = await doFetchTracingConfig({ appId, provider: TracingProvider.aliyun }) + if (!aliyunHasNotConfig) + setAliyunConfig(aliyunConfig as AliyunConfig) + } + Promise.all([ + getArizeConfig(), + getPhoenixConfig(), + getLangSmithConfig(), + getLangFuseConfig(), + getOpikConfig(), + getWeaveConfig(), + getAliyunConfig(), + ]) } const handleTracingConfigUpdated = async (provider: TracingProvider) => { @@ -155,7 +178,6 @@ const Panel: FC = () => { await fetchTracingConfig() setLoaded() })() - // eslint-disable-next-line react-hooks/exhaustive-deps }, []) const [controlShowPopup, setControlShowPopup] = useState(0) diff --git a/web/app/components/header/account-setting/language-page/index.tsx b/web/app/components/header/account-setting/language-page/index.tsx index ba0c149ae7..7d3e09fc21 100644 --- a/web/app/components/header/account-setting/language-page/index.tsx +++ b/web/app/components/header/account-setting/language-page/index.tsx @@ -32,7 +32,7 @@ export default function LanguagePage() { await updateUserProfile({ url, body: { [bodyKey]: item.value } }) notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) - await setLocaleOnClient(item.value.toString()) + setLocaleOnClient(item.value.toString()) } catch (e) { notify({ type: 'error', message: (e as Error).message }) diff --git a/web/app/components/i18n.tsx b/web/app/components/i18n.tsx index 2493e5b5af..f04f8d6cbe 100644 --- a/web/app/components/i18n.tsx +++ b/web/app/components/i18n.tsx @@ -1,11 +1,10 @@ 'use client' import type { FC } from 'react' -import React, { useEffect, useState } from 'react' +import React, { useEffect } from 'react' import I18NContext from '@/context/i18n' import type { Locale } from '@/i18n' import { setLocaleOnClient } from '@/i18n' -import Loading from './base/loading' export type II18nProps = { locale: Locale @@ -15,17 +14,10 @@ const I18n: FC = ({ locale, children, }) => { - const [loading, setLoading] = useState(true) - useEffect(() => { - setLocaleOnClient(locale, false).then(() => { - setLoading(false) - }) + setLocaleOnClient(locale, false) }, [locale]) - if (loading) - return
- return ( = ({ const deprecatedReasonKey = useMemo(() => { if (!deprecatedReason) return '' - return snakeCase2CamelCase(deprecatedReason) + return camelCase(deprecatedReason) }, [deprecatedReason]) // Check if the deprecatedReasonKey exists in i18n diff --git a/web/app/signin/_header.tsx b/web/app/signin/_header.tsx index c6e3b8a4f7..0efd30b6cc 100644 --- a/web/app/signin/_header.tsx +++ b/web/app/signin/_header.tsx @@ -36,8 +36,8 @@ const Header = () => {