feat: Implement lesson attempt tracking, retry functionality, and max attempt limits for interactive blocks.

This commit is contained in:
2025-12-22 15:47:18 -03:00
parent 32f71852d9
commit f592f78b6c
16 changed files with 325 additions and 178 deletions
@@ -1,6 +1,6 @@
"use client";
import React, { useState, useEffect } from "react";
import React, { useState, useEffect, useCallback } from "react";
import { useParams, useRouter } from "next/navigation";
import { cmsApi, GradingCategory } from "@/lib/api";
import {
@@ -29,11 +29,7 @@ export default function GradingPolicyPage() {
const [newWeight, setNewWeight] = useState<number>(0);
const [submitting, setSubmitting] = useState(false);
useEffect(() => {
loadCategories();
}, [id]);
async function loadCategories() {
const loadCategories = useCallback(async () => {
try {
const data = await cmsApi.getGradingCategories(id);
setCategories(data);
@@ -42,7 +38,11 @@ export default function GradingPolicyPage() {
} finally {
setLoading(false);
}
}
}, [id]);
useEffect(() => {
loadCategories();
}, [loadCategories]);
async function handleAdd() {
if (!newName || newWeight <= 0) return;