/* eslint-disable @next/next/no-img-element */ import Head from "next/head"; import Navbar from "@/components/Navbar"; import {BsFileEarmarkText, BsPencil, BsStar, BsBook, BsHeadphones, BsPen, BsMegaphone} from "react-icons/bs"; import {withIronSessionSsr} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import {useEffect, useState} from "react"; import useStats from "@/hooks/useStats"; import {averageScore, totalExams} from "@/utils/stats"; import useUser from "@/hooks/useUser"; import Sidebar from "@/components/Sidebar"; import Diagnostic from "@/components/Diagnostic"; import {ToastContainer} from "react-toastify"; import {capitalize} from "lodash"; import {Module} from "@/interfaces"; import ProgressBar from "@/components/Low/ProgressBar"; import Layout from "@/components/High/Layout"; import {calculateAverageLevel} from "@/utils/score"; import axios from "axios"; export const getServerSideProps = withIronSessionSsr(({req, res}) => { const user = req.session.user; if (!user) { res.setHeader("location", "/login"); res.statusCode = 302; res.end(); return { props: { user: null, }, }; } return { props: {user: req.session.user}, }; }, sessionOptions); export default function Home() { const [showDiagnostics, setShowDiagnostics] = useState(false); const {user} = useUser({redirectTo: "/login"}); const {stats} = useStats(user?.id); useEffect(() => { if (user) setShowDiagnostics(user.isFirstLogin); }, [user]); if (user && showDiagnostics) { return ( <> IELTS GPT | Muscat Training Institute setShowDiagnostics(false)} /> ); } return ( <> IELTS GPT | Muscat Training Institute {user && (
{user.name}

{user.name}

{capitalize(user.type)}
{totalExams(stats)} Exams
{stats.length} Exercises
{stats.length > 0 ? averageScore(stats) : 0}% Average Score
Bio {user.bio || "Your bio will appear here, you can change it by clicking on your name in the top right corner."}
Score History
Reading Level {user.levels.reading} / Level {user.desiredLevels.reading}
Writing Level {user.levels.writing} / Level {user.desiredLevels.writing}
Listening Level {user.levels.listening} / Level {user.desiredLevels.listening}
Speaking Level {user.levels.speaking} / Level {user.desiredLevels.speaking}
)} ); }