From 614e08807940b6671327cf09347e92affecb37fc Mon Sep 17 00:00:00 2001 From: 0112020179 Date: Mon, 7 Sep 2026 18:08:40 +0800 Subject: [PATCH] fix(frontend): display plugin data source names --- frontend/src/components/Layout.tsx | 5 +++-- frontend/src/lib/dataSources.ts | 11 +++++++++++ frontend/src/pages/Data.tsx | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 frontend/src/lib/dataSources.ts diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index d2926cb..423507e 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -64,6 +64,7 @@ import { useDialogBackdrop } from '@/lib/useDialogBackdrop' import { resolveWatchlistGroupColor } from '@/lib/watchlist-group-colors' import { computeGroupPcts, groupPctColor, groupPctTitle } from '@/lib/watchlistGroupStats' import { fmtPct } from '@/lib/format' +import { findDataSource } from '@/lib/dataSources' import { toggleTheme, useTheme } from '@/lib/theme' import { setCurrentTotal as setAlertTotal, useUnreadAlerts } from '@/lib/monitorBadge' import { ExtensionSlot } from '@/extensions/ExtensionSlot' @@ -493,10 +494,10 @@ export function Layout() { const realtimeUnavailable = quoteMode === 'none' const isWatchlistMode = quoteMode === 'watchlist' const realtimeModeLabel = isWatchlistMode ? '自选股' : '全市场' - // 当前实时行情数据源名称 (custom 时显示源名, tickflow 时不显示) + // 当前实时行情数据源名称 (插件/自定义源显示源名, tickflow 不显示) const realtimeProvider = prefs?.realtime_data_provider const realtimeProviderName = realtimeProvider && realtimeProvider !== 'tickflow' - ? (dataSources?.custom?.find(s => s.name === realtimeProvider)?.display_name || realtimeProvider) + ? (findDataSource(dataSources, realtimeProvider)?.display_name || realtimeProvider) : null const realtimeToggleDisabled = toggleQuote.isPending || isPaused const realtimeActive = realtimeEnabled && isRunning && isTrading diff --git a/frontend/src/lib/dataSources.ts b/frontend/src/lib/dataSources.ts new file mode 100644 index 0000000..4a32785 --- /dev/null +++ b/frontend/src/lib/dataSources.ts @@ -0,0 +1,11 @@ +import type { DataSourcesResponse } from './api' + +export function findDataSource( + sources: DataSourcesResponse | undefined, + name: string | undefined, +) { + if (!sources || !name) return undefined + return sources.builtin.find(source => source.name === name) + ?? sources.plugins.find(source => source.name === name) + ?? sources.custom.find(source => source.name === name) +} diff --git a/frontend/src/pages/Data.tsx b/frontend/src/pages/Data.tsx index 81695fe..1dfec51 100644 --- a/frontend/src/pages/Data.tsx +++ b/frontend/src/pages/Data.tsx @@ -36,6 +36,7 @@ import { QK } from '@/lib/queryKeys' import { PageHeader } from '@/components/PageHeader' import { useAdjFactorSyncGate } from '@/components/AdjFactorSyncGate' import { formatScheduleDatePart, formatScheduleTimePart, isToday } from '@/lib/format' +import { findDataSource } from '@/lib/dataSources' // 拆分出的子组件 import { StatCard, type FieldTab, type CapLimitValue } from '@/components/data/StatCard' @@ -193,7 +194,7 @@ export function Data() { const activeProvider = prefs.data?.daily_data_provider || 'tickflow' const activeDataSourceName = activeProvider === 'tickflow' ? 'TickFlow' - : (dataSources.data?.custom?.find(s => s.name === activeProvider)?.display_name || activeProvider) + : (findDataSource(dataSources.data, activeProvider)?.display_name || activeProvider) // —— 能力路由门控 (全项目统一判定) —— // usable = 生效源当前能否提供该能力 (含插件/自定义源; TickFlow 档位不足则不可用),