Spaces:
Running
Running
File size: 808 Bytes
ebab432 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import { useEffect, useState } from 'react'
import toast from 'react-hot-toast'
import { testAPI } from '../api/api'
export default function useTestLoader({ testId, navigate }) {
const [test, setTest] = useState(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
let cancelled = false
;(async () => {
setLoading(true)
setTest(null)
try {
const testRes = await testAPI.getTest(testId)
if (cancelled) return
setTest(testRes.data)
} catch (err) {
toast.error(err.response?.data?.detail || 'Failed to load test')
navigate('/tests')
} finally {
if (!cancelled) setLoading(false)
}
})()
return () => {
cancelled = true
}
}, [testId, navigate])
return { test, loading }
} |