From e1a33d1398f7bad95da790a708e73a9963d87c87 Mon Sep 17 00:00:00 2001 From: shafin-r Date: Mon, 6 Oct 2025 19:16:03 +0600 Subject: [PATCH] fix(nav): improve redirection logic --- app/(tabs)/categories/subjects/page.tsx | 11 ++++--- app/exam/exam-screen/page.tsx | 12 ++----- app/exam/results/page.tsx | 13 ++++---- components/Header.tsx | 42 ++++++++++++++++--------- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/app/(tabs)/categories/subjects/page.tsx b/app/(tabs)/categories/subjects/page.tsx index e125615..3bc09c6 100644 --- a/app/(tabs)/categories/subjects/page.tsx +++ b/app/(tabs)/categories/subjects/page.tsx @@ -8,6 +8,7 @@ import BackgroundWrapper from "@/components/BackgroundWrapper"; import { API_URL, getToken } from "@/lib/auth"; import { Loader, RefreshCw, Star, StarHalf } from "lucide-react"; import { useAuthStore } from "@/stores/authStore"; +import { FaStar } from "react-icons/fa"; type Subject = { subject_id: string; @@ -110,11 +111,11 @@ export default function PaperScreen() { className="w-full border-1 border-[#B0C2DA] py-4 rounded-[10px] px-6 space-y-2 text-left hover:bg-gray-50 transition-colors" >

{subject.name}

-

- - - - +

+ + + +

diff --git a/app/exam/exam-screen/page.tsx b/app/exam/exam-screen/page.tsx index af80ce0..82cc08c 100644 --- a/app/exam/exam-screen/page.tsx +++ b/app/exam/exam-screen/page.tsx @@ -57,7 +57,8 @@ export default function ExamPage() { if (isSubmitting) { return ( -
+
+

Submitting exam...

); @@ -118,14 +119,7 @@ export default function ExamPage() { disabled={isSubmitting} className="flex-1 bg-blue-900 text-white p-6 font-bold text-lg disabled:opacity-50 disabled:cursor-not-allowed hover:bg-blue-800 transition-colors flex justify-center items-center gap-2" > - {isSubmitting ? ( - <> - - Submitting... - - ) : ( - "Submit" - )} + Submit
diff --git a/app/exam/results/page.tsx b/app/exam/results/page.tsx index a2d7bc3..f6ee3c6 100644 --- a/app/exam/results/page.tsx +++ b/app/exam/results/page.tsx @@ -11,10 +11,16 @@ import { getResultViews } from "@/lib/gallery-views"; export default function ResultsPage() { const router = useRouter(); const { result, clearResult, setStatus, status } = useExamStore(); + + function handleBackToHome() { + clearResult(); + router.replace("/categories"); + } + useEffect(() => { const handlePopState = () => { if (status !== "finished") { - router.replace(`/categories`); + handleBackToHome(); } }; @@ -32,11 +38,6 @@ export default function ResultsPage() { ); } - const handleBackToHome = () => { - clearResult(); - router.replace("/categories"); - }; - const views = getResultViews(result); return ( diff --git a/components/Header.tsx b/components/Header.tsx index f4d3d0f..d697e86 100644 --- a/components/Header.tsx +++ b/components/Header.tsx @@ -3,7 +3,6 @@ import React from "react"; import { useRouter } from "next/navigation"; import { BadgeCheck, ChevronLeft, Layers } from "lucide-react"; -import styles from "@/css/Header.module.css"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { useModal } from "@/context/ModalContext"; import { useAuthStore } from "@/stores/authStore"; @@ -84,33 +83,48 @@ const Header = ({ {/* Exam timer header */} {timeRemaining > 0 && ( -
- -
-
- +
+
+ {String(hours).padStart(2, "0")} - Hrs + + Hrs +
-
- +
+ {String(minutes).padStart(2, "0")} - Mins + + Mins +
-
- +
+ {String(seconds).padStart(2, "0")} - Secs + + Secs +
-