import React from 'react';
import { Route, useLocation } from 'wouter';
import { UserProvider, useUser } from './context/UserContext';

import AuthPage from './pages/AuthPage/AuthPage';
import HomePage from './pages/HomePage';
import FriendMoments from './pages/FriendMoments/FriendMoments';
import ForumPage from './pages/Forum/posts-main/ForumPage';
import SeedList from './pages/SeedList/SeedList';
import PostDetailPage from './pages/Forum/posts-detail/PostDetailPage';
import { GroupProvider } from './context/useGroupStore';
import PublishSeed from './pages/PublishSeed/PublishSeed';
import SeedDetail from './pages/SeedList/SeedDetail/SeedDetail';
import InterestGroup from './pages/InterestGroup/InterestGroup';
import UserProfile from './pages/UserCenter/UserProfile';
import CreatePostPage from './pages/Forum/posts-create/CreatePostPage';
import MessagePage from './pages/MessagePage/MessagePage';
import CreateMoment from './pages/FriendMoments/CreateMoment';
import LevelPage from './pages/LevelPage/LevelPage';
import NewbieTasks from './pages/UserCenter/NewbieTasks';
import UserDynamics from './pages/UserCenter/UserDynamics';
import UserFriends from './pages/UserCenter/UserFriends';
import UserCollect from './pages/UserCenter/UserCollect';
import UserInvite from './pages/UserCenter/UserInvite';
import UserInfo from './pages/UserInfo/UserInfo';
import UserLayout from './pages/UserCenter/UserLayout';
import NewUserGuide from './pages/NewUserGuide/NewUserGuide';

function RedirectToAuth() {
  if (typeof window !== 'undefined') {
    window.location.replace('/auth');
  }
  return null;
}

// 私有路由保护组件
function PrivateRoute({ component: Component }) {
  const [location, setLocation] = useLocation();
  const { user, loading } = useUser();

  if (loading) {
    return <div>加载中...</div>;
  }

  if (!user) {
    setLocation('/auth');
    return null;
  }

  return <Component />;
}

function App() {
  return (
    <UserProvider>
      <GroupProvider>
        <>
          {/* 公开路由 */}
          <Route path="/auth" component={AuthPage} />

          {/* 根路径跳转到登录页 */}
          <Route path="/" component={() => <RedirectToAuth />} />

          {/* 私有路由用 PrivateRoute 包裹 */}
          <Route path="/friend-moments" component={() => <PrivateRoute component={FriendMoments} />} />
          <Route path="/friend-moments/create" component={() => <PrivateRoute component={CreateMoment} />} />
          <Route path="/forum" component={() => <PrivateRoute component={ForumPage} />} />
          <Route path="/forum/post/:postId" component={({ postId }) => <PrivateRoute component={() => <PostDetailPage postId={postId} />} />} />
          <Route path="/forum/create-post" component={() => <PrivateRoute component={CreatePostPage} />} />
          <Route path="/seed-list" component={() => <PrivateRoute component={SeedList} />} />
          <Route path="/publish-seed" component={() => <PrivateRoute component={PublishSeed} />} />
          <Route path="/seed/:id" component={({ id }) => <PrivateRoute component={() => <SeedDetail id={id} />} />} />
          <Route path="/interest-groups" component={() => <PrivateRoute component={InterestGroup} />} />
          <Route path="/messages" component={() => <PrivateRoute component={MessagePage} />} />
          <Route path="/level" component={() => <PrivateRoute component={LevelPage} />} />
          <Route path="/information/:userId" component={({ userId }) => <PrivateRoute component={() => <UserInfo userId={userId} />} />} />
          <Route path="/new-user-guide" component={() => <PrivateRoute component={NewUserGuide} />} />

          {/* 用户中心路由 */}
          <Route path="/user/profile" component={() => (
            <PrivateRoute component={() => <UserLayout><UserProfile /></UserLayout>} />
          )} />
          <Route path="/user/newbie-tasks" component={() => (
            <PrivateRoute component={() => <UserLayout><NewbieTasks /></UserLayout>} />
          )} />
          <Route path="/user/dynamics" component={() => (
            <PrivateRoute component={() => <UserLayout><UserDynamics /></UserLayout>} />
          )} />
          <Route path="/user/friends" component={() => (
            <PrivateRoute component={() => <UserLayout><UserFriends /></UserLayout>} />
          )} />
          <Route path="/user/collections" component={() => (
            <PrivateRoute component={() => <UserLayout><UserCollect /></UserLayout>} />
          )} />
          <Route path="/user/invite" component={() => (
            <PrivateRoute component={() => <UserLayout><UserInvite /></UserLayout>} />
          )} />
        </>
      </GroupProvider>
    </UserProvider>
  );
}

export default App;


// // export default App;

// import { Route } from 'wouter';
// import { Redirect } from 'wouter';
// import AuthPage from './pages/AuthPage/AuthPage';
// import HomePage from './pages/HomePage';
// import FriendMoments from './pages/FriendMoments/FriendMoments';
// import ForumPage from './pages/Forum/posts-main/ForumPage';
// import SeedList from './pages/SeedList/SeedList';
// import PostDetailPage from './pages/Forum/posts-detail/PostDetailPage';
// import { UserProvider } from './context/UserContext';
// import { GroupProvider } from './context/useGroupStore';
// import PublishSeed from './pages/PublishSeed/PublishSeed';
// import SeedDetail from './pages/SeedList/SeedDetail/SeedDetail';
// import InterestGroup from './pages/InterestGroup/InterestGroup';
// import UserProfile from './pages/UserCenter/UserProfile';
// import CreatePostPage from './pages/Forum/posts-create/CreatePostPage';
// import MessagePage from './pages/MessagePage/MessagePage';
// import CreateMoment from './pages/FriendMoments/CreateMoment';
// // import PromotionsPage from './pages/PromotionsPage/PromotionsPage';
// import LevelPage from './pages/LevelPage/LevelPage';
// import NewbieTasks from './pages/UserCenter/NewbieTasks';
// import UserDynamics from './pages/UserCenter/UserDynamics';
// import UserFriends from './pages/UserCenter/UserFriends';
// import UserCollect from './pages/UserCenter/UserCollect';
// import UserInvite from './pages/UserCenter/UserInvite';
// import UserInfo from './pages/UserInfo/UserInfo';
// import UserLayout from './pages/UserCenter/UserLayout';

// function RedirectToAuth() {
//   if (typeof window !== 'undefined') {
//     window.location.replace('/auth');
//   }
//   return null;
// }

// function App() {
//   return (
//     <UserProvider>
//       <GroupProvider>
//         <>
//           <Route path="/" component={RedirectToAuth} />
//           <Route path="/auth" component={AuthPage} />
//           <Route path="/friend-moments" component={FriendMoments} />
//           <Route path="/friend-moments/create" component={CreateMoment} />
//           <Route path="/forum" component={ForumPage} />
//           <Route path="/forum/post/:postId" component={PostDetailPage} />
//           <Route path="/forum/create-post" component={CreatePostPage} />
//           <Route path="/seed-list" component={SeedList} />
//           <Route path="/publish-seed" component={PublishSeed} />
//           {/* <Route path="/publish-seed" component={SimpleUploader} /> */}
//           <Route path="/seed/:id" component={SeedDetail} />
//           <Route path="/interest-groups" component={InterestGroup} />
//           <Route path="/messages" component={MessagePage} />
//           {/* <Route path="/promotions" component={PromotionsPage} /> */}
//           <Route path="/level" component={LevelPage} />
//           <Route path="/information/:userId" component={UserInfo} />


//           {/* 用户中心嵌套路由模拟 */}
//           <Route path="/user/profile" component={() => (
//             <UserLayout><UserProfile /></UserLayout>
//           )} />
//           <Route path="/user/newbie-tasks" component={() => (
//             <UserLayout><NewbieTasks /></UserLayout>
//           )} />
//           <Route path="/user/dynamics" component={() => (
//             <UserLayout><UserDynamics /></UserLayout>
//           )} />
//           <Route path="/user/friends" component={() => (
//             <UserLayout><UserFriends /></UserLayout>
//           )} />
//           <Route path="/user/collections" component={() => (
//             <UserLayout><UserCollect /></UserLayout>
//           )} />
//           <Route path="/user/invite" component={() => (
//             <UserLayout><UserInvite /></UserLayout>
//           )} />
//         </>
//       </GroupProvider>
//     </UserProvider>
//   );
// }

// export default App;
