import { ReactNode, useEffect, useState } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { useAppStore, getStatusColor } from '../stores/appStore'; import styles from './Layout.module.css'; interface LayoutProps { children: ReactNode; } const navItems = [ { path: '/', label: '我的钱包', icon: '🔐' }, { path: '/create', label: '创建钱包', icon: '➕' }, { path: '/join', label: '加入创建', icon: '🤝' }, { path: '/cosign/join', label: '参与签名', icon: '🔥' }, { path: '/settings', label: '设置', icon: '⚙️' }, ]; export default function Layout({ children }: LayoutProps) { const location = useLocation(); const [isRefreshing, setIsRefreshing] = useState(false); const [kavaNetwork, setKavaNetwork] = useState<'mainnet' | 'testnet'>('mainnet'); const { environment, operation, checkAllServices, appReady } = useAppStore(); // 启动时检测环境和获取网络 useEffect(() => { checkAllServices(); // 获取当前 Kava 网络 const loadNetwork = () => { // 优先从 localStorage 读取(与 transaction.ts 保持一致) const storedNetwork = localStorage.getItem('kava_network') as 'mainnet' | 'testnet' | null; if (storedNetwork) { setKavaNetwork(storedNetwork); } else { // 后备:从 Electron API 读取 window.electronAPI?.kava.getNetwork().then(result => { setKavaNetwork(result.network); }); } }; loadNetwork(); // 监听 localStorage 变化(当其他标签页切换网络时触发) const handleStorageChange = (e: StorageEvent) => { if (e.key === 'kava_network' && e.newValue) { setKavaNetwork(e.newValue as 'mainnet' | 'testnet'); } }; // 监听同一窗口的自定义事件(Settings 页面切换网络时触发) const handleCustomNetworkChange = (e: Event) => { const customEvent = e as CustomEvent<{ network: 'mainnet' | 'testnet' }>; setKavaNetwork(customEvent.detail.network); }; window.addEventListener('storage', handleStorageChange); window.addEventListener('kava-network-change', handleCustomNetworkChange); return () => { window.removeEventListener('storage', handleStorageChange); window.removeEventListener('kava-network-change', handleCustomNetworkChange); }; }, [checkAllServices]); const handleRefresh = async () => { setIsRefreshing(true); await checkAllServices(); setIsRefreshing(false); }; const getOperationTitle = () => { if (operation.type === 'keygen') return '密钥生成中'; if (operation.type === 'sign') return '签名进行中'; return '操作进行中'; }; return (