feat: Implement API modules for admin, auth, exam, result, and setup functionalities

- Created adminApi.ts for admin-related operations including user management and site settings.
- Developed authApi.ts for authentication processes such as registration, login, and profile management.
- Added examApi.ts for handling exam CRUD operations.
- Introduced resultApi.ts for managing results submission and retrieval.
- Established setupApi.ts for initial setup processes and status checks.
- Created ErrorBoundary component to handle rendering errors gracefully in the frontend.
- Re-exported shared API utilities in index.ts for easier access.
This commit is contained in:
LaurensBartelds committed 2026-04-26 20:10:46 +02:00
1 parent 62af83ce53
commit c64cdcd9e3
46 files changed
+2227 -1125

No files matched your search

+4 -3
View File
@@ -1,7 +1,8 @@
import { useState, useEffect, useCallback } from 'react'
import { useNavigate, useParams, Navigate } from 'react-router-dom'
import { useAuth } from '../contexts/AuthContext'
import { apiFetch } from '../utils/api'
import * as examApi from '../api/examApi'
import * as resultApi from '../api/resultApi'
import MyExams from './MyExams'
import MyResults from './MyResults'
import Settings from './Settings'
@@ -24,9 +25,9 @@ export default function Workspace() {
const loadCounts = useCallback(async () => {
try {
const exams = await apiFetch<{ id: number }[]>('/api/exams')
const exams = await examApi.listExams()
setExamCount(exams.length)
const results = await apiFetch<{ results: unknown[]; total: number }>('/api/results')
const results = await resultApi.listResults()
setResultCount(results.total)
} catch {
// silently ignore