import React from 'react';
import { Routes, Route, Navigate } from 'react-router-dom';

// 导入布局
import MainLayout from '../layouts/MainLayout';

// 导入页面
import LoginPage from '../features/auth/pages/LoginPage';
import RegisterPage from '../features/auth/pages/RegisterPage';
import AdminPanel from '../features/admin/pages/AdminPanel';
import NotFoundPage from '../pages/NotFoundPage';
import UnauthorizedPage from '../pages/UnauthorizedPage';

// 导入新创建的页面组件
import HomePage from '../features/home/pages/HomePage';
import ForumPage from '../features/forum/pages/ForumPage';
import PTPage from '../features/pt/pages/PTPage';
import TorrentListPage from '../features/torrents/pages/TorrentListPage';
import UploadTorrentPage from '../features/torrents/pages/UploadTorrentPage';
import ToolsPage from '../features/tools/pages/ToolsPage';
import ProfilePage from '../features/profile/pages/ProfilePage';

// 导入路由守卫
import ProtectedRoute from './ProtectedRoute';
import PermissionRoute from './PermissionRoute';

const AppRoutes = () => {
  return (
    <Routes>
      {/* 公共路由 */}
      <Route path="/login" element={<LoginPage />} />
      <Route path="/register" element={<RegisterPage />} />
      <Route path="/unauthorized" element={<UnauthorizedPage />} />

      {/* 受保护的路由 (需要登录) */}
      <Route 
        path="/" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <HomePage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/forum" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <ForumPage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/pt" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <PTPage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/torrents" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <TorrentListPage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/upload" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <UploadTorrentPage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/tools" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <ToolsPage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route 
        path="/profile" 
        element={
          <ProtectedRoute>
            <MainLayout>
              <ProfilePage />
            </MainLayout>
          </ProtectedRoute>
        } 
      />
      
      <Route
        path="/admin"
        element={
          <ProtectedRoute>
            <PermissionRoute requiredRoles={['admin']}> 
              <MainLayout>
                <AdminPanel />
              </MainLayout>
            </PermissionRoute>
          </ProtectedRoute>
        }
      />

      {/* 404 Not Found 路由 */}
      <Route path="*" element={<MainLayout><NotFoundPage /></MainLayout>} /> 
    </Routes>
  );
};

export default AppRoutes;