From 0b88d6bcd133b5a7b5b0b0d3616621e79d321033 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Fri, 30 Aug 2024 11:56:35 +0100 Subject: [PATCH] Improved a tiny bit of the performance with Student Dashboard --- src/dashboards/Student.tsx | 4 ++-- src/pages/index.tsx | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/dashboards/Student.tsx b/src/dashboards/Student.tsx index 805a2d3b..3a8609d9 100644 --- a/src/dashboards/Student.tsx +++ b/src/dashboards/Student.tsx @@ -30,11 +30,11 @@ import {toast} from "react-toastify"; interface Props { user: User; + users: User[]; linkedCorporate?: CorporateUser | MasterCorporateUser; } -export default function StudentDashboard({user, linkedCorporate}: Props) { - const {users} = useUsers(); +export default function StudentDashboard({user, users, linkedCorporate}: Props) { const {gradingSystem} = useGradingSystem(); const {data: stats} = useFilterRecordsByUser(user.id, !user?.id); const {assignments, isLoading: isAssignmentsLoading, reload: reloadAssignments} = useAssignments({assignees: user?.id}); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index e0651c40..f584c29b 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -29,11 +29,12 @@ import MasterCorporateDashboard from "@/dashboards/MasterCorporate"; import PaymentDue from "./(status)/PaymentDue"; import {useRouter} from "next/router"; import {PayPalScriptProvider} from "@paypal/react-paypal-js"; -import {CorporateUser, MasterCorporateUser, Type, userTypes} from "@/interfaces/user"; +import {CorporateUser, MasterCorporateUser, Type, User, userTypes} from "@/interfaces/user"; import Select from "react-select"; import {USER_TYPE_LABELS} from "@/resources/user"; import {checkAccess, getTypesOfUser} from "@/utils/permissions"; import {getUserCorporate} from "@/utils/groups.be"; +import {getUsers} from "@/utils/users.be"; export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { const user = req.session.user; @@ -55,19 +56,21 @@ export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { } const linkedCorporate = (await getUserCorporate(user.id)) || null; + const users = await getUsers(); return { - props: {user, envVariables, linkedCorporate}, + props: {user, envVariables, linkedCorporate, users}, }; }, sessionOptions); interface Props { - user: any; + user: User; envVariables: {[key: string]: string}; linkedCorporate?: CorporateUser | MasterCorporateUser; + users: User[]; } -export default function Home({linkedCorporate}: Props) { +export default function Home({users, linkedCorporate}: Props) { const [showDiagnostics, setShowDiagnostics] = useState(false); const [showDemographicInput, setShowDemographicInput] = useState(false); const [selectedScreen, setSelectedScreen] = useState("admin"); @@ -173,7 +176,7 @@ export default function Home({linkedCorporate}: Props) { {user && ( - {checkAccess(user, ["student"]) && } + {checkAccess(user, ["student"]) && } {checkAccess(user, ["teacher"]) && } {checkAccess(user, ["corporate"]) && } {checkAccess(user, ["mastercorporate"]) && } @@ -193,7 +196,7 @@ export default function Home({linkedCorporate}: Props) { onChange={(value) => (value ? setSelectedScreen(value.value) : setSelectedScreen("admin"))} /> - {selectedScreen === "student" && } + {selectedScreen === "student" && } {selectedScreen === "teacher" && } {selectedScreen === "corporate" && (