Spaces:
Running
Running
| import { useState, useMemo } from 'react' | |
| import { SERIES_LABELS, TYPE_LABELS } from '../utils/constants' | |
| export function useTestNavigation(tests) { | |
| const [nav, setNav] = useState([]) | |
| const push = (type, value) => setNav(n => [...n, { type, value }]) | |
| const goBack = (idx) => setNav(n => n.slice(0, idx)) | |
| const filteredTests = useMemo(() => { | |
| let filtered = tests | |
| nav.forEach(step => { | |
| if (step.type === 'category') filtered = filtered.filter(t => t.category === step.value) | |
| if (step.type === 'series') filtered = filtered.filter(t => t.series_name === step.value) | |
| if (step.type === 'type') filtered = filtered.filter(t => t.test_type === step.value) | |
| if (step.type === 'subject') filtered = filtered.filter(t => t.subject === step.value) | |
| }) | |
| return filtered | |
| }, [tests, nav]) | |
| const breadcrumbs = useMemo(() => ['Tests', ...nav.map(s => { | |
| if (s.type === 'category') return s.value === 'weekly_quiz' ? 'Weekly Quiz' : 'Test Series' | |
| if (s.type === 'series') return SERIES_LABELS[s.value] || s.value | |
| if (s.type === 'type') return TYPE_LABELS[s.value] || s.value | |
| if (s.type === 'subject') return s.value | |
| return s.value | |
| })], [nav]) | |
| const currentNav = nav[nav.length - 1] | |
| return { nav, currentNav, push, goBack, filteredTests, breadcrumbs } | |
| } |