1- import { useEffect } from "react" ;
1+ import { lazy , Suspense , useEffect } from "react" ;
22import {
33 BrowserRouter as Router ,
44 Navigate ,
@@ -8,24 +8,44 @@ import {
88
99import { refreshCsrfToken } from "src/apiClient/client" ;
1010import BaseLayout from "src/components/BaseLayout" ;
11- import { ApprovalsPage } from "src/pages/Approvals" ;
12- import { AddNewApproval } from "src/pages/Approvals/AddNewApproval" ;
13- import { GearInventoryPage } from "src/pages/Inventory/GearInventoryPage" ;
14- import { ApproveDeskCreditPage } from "src/pages/OfficeHours/ApproveDeskCreditPage" ;
15- import { MyOfficeHoursHistory } from "src/pages/OfficeHours/MyOfficeHoursHistory" ;
16- import { OfficeHoursHistory } from "src/pages/OfficeHours/OfficeHoursHistory" ;
17- import { RequestDeskCreditPage } from "src/pages/OfficeHours/RequestDeskCreditPage" ;
18- import { ChangePassword } from "src/pages/People/PersonProfile/PersonChangePassword" ;
1911import { useLoadCurrentUser , usePermissions } from "src/redux/auth" ;
2012
21- import { AllGearPage , GearItemPage } from "./pages/Gear" ;
22- import { AddNewGear } from "./pages/Gear/AddNewGear" ;
2313import LoginPage from "./pages/LogIn" ;
24- import { RequestPasswordConfirm } from "./pages/LogIn/RequestPasswordConfirm" ;
25- import { RequestPasswordReset } from "./pages/LogIn/RequestPasswordReset" ;
26- import { OfficeHoursPage } from "./pages/OfficeHours" ;
2714import { PeoplePage , PersonPage } from "./pages/People" ;
28- import { AddNewPerson } from "./pages/People/AddNewPerson" ;
15+
16+ const ApprovalsPage = lazy ( ( ) => import ( "./pages/Approvals/ApprovalsPage" ) ) ;
17+ const AddNewApproval = lazy ( ( ) => import ( "./pages/Approvals/AddNewApproval" ) ) ;
18+ const GearInventoryPage = lazy (
19+ ( ) => import ( "./pages/Inventory/GearInventoryPage" ) ,
20+ ) ;
21+ const ApproveDeskCreditPage = lazy (
22+ ( ) => import ( "./pages/OfficeHours/ApproveDeskCreditPage" ) ,
23+ ) ;
24+ const MyOfficeHoursHistory = lazy (
25+ ( ) => import ( "./pages/OfficeHours/MyOfficeHoursHistory" ) ,
26+ ) ;
27+ const OfficeHoursHistory = lazy (
28+ ( ) => import ( "./pages/OfficeHours/OfficeHoursHistory" ) ,
29+ ) ;
30+ const RequestDeskCreditPage = lazy (
31+ ( ) => import ( "./pages/OfficeHours/RequestDeskCreditPage" ) ,
32+ ) ;
33+ const ChangePassword = lazy (
34+ ( ) => import ( "./pages/People/PersonProfile/PersonChangePassword" ) ,
35+ ) ;
36+ const AllGearPage = lazy ( ( ) => import ( "./pages/Gear/AllGearPage" ) ) ;
37+ const GearItemPage = lazy ( ( ) => import ( "./pages/Gear/GearItemPage" ) ) ;
38+ const AddNewGear = lazy ( ( ) => import ( "./pages/Gear/AddNewGear" ) ) ;
39+ const RequestPasswordConfirm = lazy (
40+ ( ) => import ( "./pages/LogIn/RequestPasswordConfirm" ) ,
41+ ) ;
42+ const RequestPasswordReset = lazy (
43+ ( ) => import ( "./pages/LogIn/RequestPasswordReset" ) ,
44+ ) ;
45+ const OfficeHoursPage = lazy (
46+ ( ) => import ( "./pages/OfficeHours/OfficeHoursPage" ) ,
47+ ) ;
48+ const AddNewPerson = lazy ( ( ) => import ( "./pages/People/AddNewPerson" ) ) ;
2949
3050function App ( ) {
3151 const { loggedIn, isLoading } = useLoadCurrentUser ( ) ;
@@ -62,23 +82,25 @@ function App() {
6282 return (
6383 < Router basename = "/" >
6484 < BaseLayout >
65- < Routes >
66- { publicRoutes }
67- < Route
68- path = "*"
69- element = {
70- < Navigate
71- to = { {
72- pathname : "/login" ,
73- search : `redirectTo=${ encodeURIComponent (
74- pathname + search ,
75- ) } `,
76- } }
77- replace
78- />
79- }
80- />
81- </ Routes >
85+ < Suspense >
86+ < Routes >
87+ { publicRoutes }
88+ < Route
89+ path = "*"
90+ element = {
91+ < Navigate
92+ to = { {
93+ pathname : "/login" ,
94+ search : `redirectTo=${ encodeURIComponent (
95+ pathname + search ,
96+ ) } `,
97+ } }
98+ replace
99+ />
100+ }
101+ />
102+ </ Routes >
103+ </ Suspense >
82104 </ BaseLayout >
83105 </ Router >
84106 ) ;
@@ -87,44 +109,49 @@ function App() {
87109 return (
88110 < Router basename = "/" >
89111 < BaseLayout >
90- < Routes >
91- { publicRoutes }
92-
93- < Route path = "/change-password" element = { < ChangePassword /> } />
94-
95- < Route path = "/people" element = { < PeoplePage /> } />
96- < Route path = "/people/:personId" element = { < PersonPage /> } />
97- < Route path = "/add-person" element = { < AddNewPerson /> } />
98-
99- < Route path = "/add-gear" element = { < AddNewGear /> } />
100- < Route path = "/gear" element = { < AllGearPage /> } />
101- < Route path = "/gear/:gearId" element = { < GearItemPage /> } />
102-
103- < Route path = "/office-hours" element = { < OfficeHoursPage /> } />
104- < Route path = "/gear-inventory" element = { < GearInventoryPage /> } />
105- < Route path = "/approvals" element = { < ApprovalsPage /> } />
106-
107- { isApprover && (
108- < Route path = "/add-approval" element = { < AddNewApproval /> } />
109- ) }
110-
111- < Route
112- path = "/request-desk-credit"
113- element = { < RequestDeskCreditPage /> }
114- />
115- < Route
116- path = "/approve-desk-credit"
117- element = { < ApproveDeskCreditPage /> }
118- />
119- < Route
120- path = "/office-hours-history"
121- element = { < OfficeHoursHistory /> }
122- />
123- < Route path = "/volunteer-history" element = { < MyOfficeHoursHistory /> } />
124-
125- < Route path = "/" element = { < Navigate to = "/people" replace /> } />
126- < Route path = "*" element = { < Navigate to = "/people" replace /> } />
127- </ Routes >
112+ < Suspense >
113+ < Routes >
114+ { publicRoutes }
115+
116+ < Route path = "/change-password" element = { < ChangePassword /> } />
117+
118+ < Route path = "/people" element = { < PeoplePage /> } />
119+ < Route path = "/people/:personId" element = { < PersonPage /> } />
120+ < Route path = "/add-person" element = { < AddNewPerson /> } />
121+
122+ < Route path = "/add-gear" element = { < AddNewGear /> } />
123+ < Route path = "/gear" element = { < AllGearPage /> } />
124+ < Route path = "/gear/:gearId" element = { < GearItemPage /> } />
125+
126+ < Route path = "/office-hours" element = { < OfficeHoursPage /> } />
127+ < Route path = "/gear-inventory" element = { < GearInventoryPage /> } />
128+ < Route path = "/approvals" element = { < ApprovalsPage /> } />
129+
130+ { isApprover && (
131+ < Route path = "/add-approval" element = { < AddNewApproval /> } />
132+ ) }
133+
134+ < Route
135+ path = "/request-desk-credit"
136+ element = { < RequestDeskCreditPage /> }
137+ />
138+ < Route
139+ path = "/approve-desk-credit"
140+ element = { < ApproveDeskCreditPage /> }
141+ />
142+ < Route
143+ path = "/office-hours-history"
144+ element = { < OfficeHoursHistory /> }
145+ />
146+ < Route
147+ path = "/volunteer-history"
148+ element = { < MyOfficeHoursHistory /> }
149+ />
150+
151+ < Route path = "/" element = { < Navigate to = "/people" replace /> } />
152+ < Route path = "*" element = { < Navigate to = "/people" replace /> } />
153+ </ Routes >
154+ </ Suspense >
128155 </ BaseLayout >
129156 </ Router >
130157 ) ;
0 commit comments