2
0
Просмотр исходного кода

✨ feat(routes): implement classroom routing logic

- add HomeClassroomPage component to handle default classroom navigation
- create RouteClassroomPage to distinguish between public and private classrooms
- import useParams from react-router for route parameter handling
- update main route to use HomeClassroomPage as default
- modify classroom route to use RouteClassroomPage with protected route

♻️ refactor(layout): remove unused location state

- delete unused location variable from MainLayout component
yourname 6 месяцев назад
Родитель
Сommit
eec37c07dc
2 измененных файлов с 29 добавлено и 4 удалено
  1. 0 1
      src/client/mobile/layouts/MainLayout.tsx
  2. 29 3
      src/client/mobile/routes.tsx

+ 0 - 1
src/client/mobile/layouts/MainLayout.tsx

@@ -23,7 +23,6 @@ export const MainLayout = () => {
   const [sidebarOpen, setSidebarOpen] = useState(false);
   const { user } = useAuth();
   const navigate = useNavigate();
-  const location = useLocation();
 
   const handleClassroomClick = (classId = '') => {
     if (user?.userType === UserType.TEACHER) {

+ 29 - 3
src/client/mobile/routes.tsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import { createBrowserRouter, Navigate } from 'react-router';
+import { createBrowserRouter, Navigate, useParams } from 'react-router';
 import { ProtectedRoute } from './components/ProtectedRoute';
 import { ErrorPage } from './components/ErrorPage';
 import { NotFoundPage } from './components/NotFoundPage';
@@ -19,6 +19,32 @@ import ExamAdmin from './components/Exam/ExamAdmin';
 import ExamCard from './components/Exam/ExamCard';
 import MemberPage from './pages/MemberPage';
 import { MainLayout } from './layouts/MainLayout';
+import { getGlobalConfig } from '../utils/utils';
+import { UserType } from '@/server/modules/users/user.enum';
+import { useAuth } from './hooks/AuthProvider';
+
+const PublicClassroomPage = () => <ClassroomPage />;
+const PrivateClassroomPage = () => <ClassroomPage />;
+const RouteClassroomPage = () => {
+  let params = useParams()
+  if( params.classId == getGlobalConfig('PUBLIC_CHATROOM_ID'))
+    return <PublicClassroomPage />
+  else
+    return <PrivateClassroomPage />
+}
+const HomeClassroomPage = () => {
+  const { user } = useAuth();
+
+  const getUrl = (classId = '') => {
+    if (user?.userType === UserType.TEACHER) {
+      return `/mobile/classroom/${classId}/${UserType.TEACHER}`;
+    } else {
+      return `/mobile/classroom/${classId}/${UserType.STUDENT}`;
+    }
+  };
+
+  return <Navigate to={getUrl(getGlobalConfig('PUBLIC_CHATROOM_ID'))} replace />
+};
 
 export const router = createBrowserRouter([
   {
@@ -47,7 +73,7 @@ export const router = createBrowserRouter([
     children: [
       {
         path: '',
-        element: <StockHomePage />
+        element: <HomeClassroomPage />
       },
       {
         path: 'member',
@@ -55,7 +81,7 @@ export const router = createBrowserRouter([
       },
       {
         path: 'classroom/:classId/:role',
-        element: <ProtectedRoute><ClassroomPage /></ProtectedRoute>,
+        element: <ProtectedRoute><RouteClassroomPage /></ProtectedRoute>,
         errorElement: <ErrorPage />
       },
       {