import { useEffect, useState } from 'react'; import { Outlet, NavLink, useNavigate } from 'react-router-dom'; import { HardDrive, LayoutDashboard, ListTodo, LogOut, Send, Share2, Trash2 } from 'lucide-react'; import { motion } from 'motion/react'; import { cn } from '@/src/lib/utils'; import { ThemeToggle } from '@/src/components/ThemeToggle'; import { logout } from '@/src/lib/auth'; import { getSession, type PortalSession } from '@/src/lib/session'; export default function MobileLayout() { const navigate = useNavigate(); const [session, setSession] = useState(() => getSession()); useEffect(() => { const handleSessionChange = (event: Event) => { const customEvent = event as CustomEvent; setSession(customEvent.detail ?? getSession()); }; window.addEventListener('portal-session-changed', handleSessionChange); return () => window.removeEventListener('portal-session-changed', handleSessionChange); }, []); useEffect(() => { if (!session) { navigate('/login', { replace: true }); } }, [navigate, session]); const navItems = [ { to: '/overview', icon: LayoutDashboard, label: '概览' }, { to: '/files', icon: HardDrive, label: '网盘' }, { to: '/tasks', icon: ListTodo, label: '任务' }, { to: '/shares', icon: Share2, label: '分享' }, { to: '/recycle-bin', icon: Trash2, label: '回收站' }, { to: '/transfer', icon: Send, label: '快传' }, ]; return (
移动端门户
{session?.user.username || '游客用户'}
); }