import React, { useEffect, useState } from 'react'; import { Wifi, WifiOff, AlertCircle, Loader2 } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; import { useNetworkStatus } from '../hooks/useNetworkStatus'; interface NetworkStatusBarProps { className?: string; } export function NetworkStatusBar({ className = '' }: NetworkStatusBarProps) { const { isOnline, isSlowConnection, queueLength } = useNetworkStatus(); const [showSlowWarning, setShowSlowWarning] = useState(false); const [dismissed, setDismissed] = useState(false); // 慢网络警告自动显示 useEffect(() => { if (isSlowConnection && isOnline) { setShowSlowWarning(true); const timer = setTimeout(() => setShowSlowWarning(false), 5000); return () => clearTimeout(timer); } }, [isSlowConnection, isOnline]); // 离线时重置 dismissed useEffect(() => { if (!isOnline) setDismissed(false); }, [isOnline]); if (dismissed) return null; return ( {!isOnline && (
网络已断开 {queueLength > 0 && ( {queueLength}个待同步 )}
)} {isOnline && showSlowWarning && (
网络较慢
)} {isOnline && queueLength > 0 && (
同步{queueLength}个操作...
)}
); } // 小型网络状态指示器(用于按钮等) export function NetworkIndicator({ className = '' }: { className?: string }) { const { isOnline } = useNetworkStatus(); if (isOnline) return null; return ( 离线 ); }