import { useState, useEffect } from "react"; import { Link } from "@heroui/link"; import { Navbar as HeroUINavbar, NavbarBrand, NavbarContent, } from "@heroui/navbar"; import { useNavigate } from "react-router-dom"; import { isWebViewFunc } from "@/utils/panel"; import { Logo } from "@/components/icons"; import { siteConfig, getCachedConfig } from "@/config/site"; export const Navbar = () => { const navigate = useNavigate(); // 初始状态使用siteConfig中已经从缓存读取的值,避免闪烁 const [appName, setAppName] = useState(siteConfig.name); const [isWebView, setIsWebView] = useState(false); // 检测是否在WebView中运行 useEffect(() => { setIsWebView(isWebViewFunc()); }, []); useEffect(() => { // 异步检查是否有更新的配置 const checkForUpdates = async () => { try { const cachedAppName = await getCachedConfig("app_name"); if (cachedAppName && cachedAppName !== appName) { setAppName(cachedAppName); // 同步更新siteConfig siteConfig.name = cachedAppName; } } catch (error) { console.warn("检查配置更新失败:", error); } }; // 延迟执行,避免阻塞初始渲染 const timer = setTimeout(checkForUpdates, 100); // 监听配置更新事件 const handleConfigUpdate = async () => { try { const cachedAppName = await getCachedConfig("app_name"); if (cachedAppName) { setAppName(cachedAppName); siteConfig.name = cachedAppName; } } catch (error) { console.warn("更新配置失败:", error); } }; window.addEventListener("configUpdated", handleConfigUpdate); return () => { clearTimeout(timer); window.removeEventListener("configUpdated", handleConfigUpdate); }; }, [appName]); return ( <>

{appName}

{/* WebView设置图标 */} {isWebView && ( )}
); };