fix: Authentication headers and dynamic userId for CBT/DPP history page

This commit is contained in:
2026-09-24 20:20:25 +05:30
parent a98a55a07d
commit 3ed7028bda

View File

@@ -1,7 +1,9 @@
"use client"; "use client";
import { useEffect, useState, use } from "react"; import { useEffect, useState, use } from "react";
import Link from "next/link"; import Link from "next/link";
import { fetchWithAuth } from "@/lib/apiClient";
import { useActiveUser } from "@/hooks/useActiveUser";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card"; import { Card, CardContent } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge"; import { Badge } from "@/components/ui/badge";
@@ -18,15 +20,15 @@ export default function AttemptHistoryPage({ params }: { params: Promise<{ attem
const [test, setTest] = useState<any>(null); const [test, setTest] = useState<any>(null);
const [questions, setQuestions] = useState<Record<string, any>>({}); const [questions, setQuestions] = useState<Record<string, any>>({});
const userId = "b0e17378-864d-439e-8806-708dc48a891b"; const { userId } = useActiveUser();
useEffect(() => { useEffect(() => {
if (!userId) return;
async function fetchHistoryData() { async function fetchHistoryData() {
try { try {
const apiUrl = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000';
// 1. Fetch all attempts to find this specific one // 1. Fetch all attempts to find this specific one
const attemptsRes = await fetch(`${apiUrl}/api/users/${userId}/attempts`); const attemptsRes = await fetchWithAuth(`/api/users/${userId}/attempts`);
const attemptsData = await attemptsRes.json(); const attemptsData = await attemptsRes.json();
const foundAttempt = attemptsData.find((a: any) => a.id === attemptId); const foundAttempt = attemptsData.find((a: any) => a.id === attemptId);
@@ -36,7 +38,7 @@ export default function AttemptHistoryPage({ params }: { params: Promise<{ attem
setAttempt(foundAttempt); setAttempt(foundAttempt);
// 2. Fetch the test details // 2. Fetch the test details
const testRes = await fetch(`${apiUrl}/api/tests/${foundAttempt.source_id}?user_id=${userId}`); const testRes = await fetchWithAuth(`/api/tests/${foundAttempt.source_id}?user_id=${userId}`);
const testData = await testRes.json(); const testData = await testRes.json();
setTest(testData); setTest(testData);
@@ -44,7 +46,7 @@ export default function AttemptHistoryPage({ params }: { params: Promise<{ attem
const qs: Record<string, any> = {}; const qs: Record<string, any> = {};
await Promise.all( await Promise.all(
foundAttempt.answers.map(async (ans: any) => { foundAttempt.answers.map(async (ans: any) => {
const qRes = await fetch(`${apiUrl}/api/questions/${ans.question_id}`); const qRes = await fetchWithAuth(`/api/questions/${ans.question_id}`);
if (qRes.ok) { if (qRes.ok) {
const qData = await qRes.json(); const qData = await qRes.json();
qs[ans.question_id] = qData; qs[ans.question_id] = qData;