"use client" import Link from "next/link" import { MonitorPlay } from "lucide-react" import { useRouter, useSearchParams } from "next/navigation" import { HeaderSearch } from "@/components/header-search" import { useEffect, useState, Suspense } from "react" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" type RecentCompany = { market: string symbol: string company_name: string last_update: string } function NavHeaderInner() { const router = useRouter() const searchParams = useSearchParams() const [dataSource, setDataSource] = useState("Bloomberg") const [companies, setCompanies] = useState([]) // Sync state with URL params useEffect(() => { const sourceParam = searchParams.get('source') if (sourceParam && sourceParam !== dataSource) { setDataSource(sourceParam) } }, [searchParams]) const handleDataSourceChange = (newSource: string) => { setDataSource(newSource) // If viewing a company, update URL to trigger reload with new source const currentSymbol = searchParams.get('symbol') if (currentSymbol) { const params = new URLSearchParams(searchParams.toString()) params.set('source', newSource) router.push(`/?${params.toString()}`) } } // Fetch recent companies useEffect(() => { const fetchRecent = async () => { try { // Use relative path since we are in same domain mainly const res = await fetch(`/api/data/recent?data_source=${dataSource}`) if (res.ok) { const data = await res.json() setCompanies(Array.isArray(data) ? data : []) } } catch (err) { console.error("Failed to fetch recent companies:", err) } } fetchRecent() }, [dataSource]) const handleCompanyChange = (value: string) => { if (!value) return const [symbol, market] = value.split(':') const company = companies.find(c => c.symbol === symbol && c.market === market) // Push URL params to trigger page state update // We encode company name as well to display it nicely before full details load const params = new URLSearchParams() params.set('symbol', symbol) params.set('market', market) params.set('source', dataSource) if (company) params.set('name', company.company_name) params.set('t', Date.now().toString()) // Force update router.push(`/?${params.toString()}`) } return (
{/* Adjusted constraint */} 股票分析 AI {/* 快速选择栏 */}
快速访问:
{/* Portal Target for Dynamic Content */}
) } // Suspense wrapper for useSearchParams export function NavHeader() { return (
股票分析 AI
}>
) }