Merge pull request #264 from 0112020179/codex/fix-plugin-source-display

fix(frontend): display plugin data source names
This commit is contained in:
wshy
2026-09-08 16:53:27 +08:00
committed by GitHub
3 changed files with 16 additions and 3 deletions
+3 -2
View File
@@ -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
+11
View File
@@ -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)
}
+2 -1
View File
@@ -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 档位不足则不可用),