mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
change design and queries to api
This commit is contained in:
@@ -75,7 +75,6 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [starting, setStarting] = useState(false);
|
||||
const [result, setResult] = useState(null);
|
||||
const [reviewAttempted, setReviewAttempted] = useState(false);
|
||||
const [submitError, setSubmitError] = useState(null);
|
||||
|
||||
// ── Timer state ───────────────────────────────────────────────────────────
|
||||
@@ -107,7 +106,6 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
setResult(null);
|
||||
setRemainingSeconds(null);
|
||||
setTimeExpired(false);
|
||||
setReviewAttempted(false);
|
||||
sessionRef.current = { sessionId: null, expiresAt: null };
|
||||
timerFiredRef.current = false;
|
||||
const draft = quiz?.active_session?.draft_answers ?? {};
|
||||
@@ -222,7 +220,6 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
setResult(null);
|
||||
setRemainingSeconds(null);
|
||||
setTimeExpired(false);
|
||||
setReviewAttempted(false);
|
||||
sessionRef.current = { sessionId: null, expiresAt: null };
|
||||
timerFiredRef.current = false;
|
||||
setStage("intro");
|
||||
@@ -266,7 +263,6 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
};
|
||||
|
||||
const handleGoToReview = () => {
|
||||
setReviewAttempted(true);
|
||||
setStage("review");
|
||||
};
|
||||
|
||||
@@ -910,11 +906,11 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
<Button
|
||||
className="w-full"
|
||||
onClick={handleGoToReview}
|
||||
disabled={submitting}
|
||||
disabled={submitting || unansweredCount > 0}
|
||||
>
|
||||
Review & submit
|
||||
</Button>
|
||||
{reviewAttempted && unansweredCount > 0 && (
|
||||
{unansweredCount > 0 && (
|
||||
<p className="text-xs text-red-600 dark:text-red-400 text-center">
|
||||
Answer all {total} questions first — {unansweredCount} remaining.
|
||||
</p>
|
||||
@@ -968,7 +964,7 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
<ChevronLeft className="size-4" />
|
||||
Previous
|
||||
</Button>
|
||||
<Button onClick={handleNext} disabled={submitting}>
|
||||
<Button onClick={handleNext} disabled={submitting || (isLast && unansweredCount > 0)}>
|
||||
{submitting ? "Submitting…" : isLast ? "Review & submit" : "Next"}
|
||||
{!submitting && <ChevronRight className="size-4" />}
|
||||
</Button>
|
||||
@@ -1079,11 +1075,16 @@ const QuizBlock = ({ quiz, loading = false, onStart, onDraft, onRefreshSession,
|
||||
<ChevronLeft className="size-4" />
|
||||
Previous
|
||||
</Button>
|
||||
<Button onClick={handleNext} disabled={submitting}>
|
||||
<Button onClick={handleNext} disabled={submitting || (isLast && unansweredCount > 0)}>
|
||||
{submitting ? "Submitting…" : isLast ? "Review answers" : "Next"}
|
||||
{!submitting && <ChevronRight className="size-4" />}
|
||||
</Button>
|
||||
</div>
|
||||
{isLast && unansweredCount > 0 && (
|
||||
<p className="text-xs text-red-600 dark:text-red-400 text-center">
|
||||
Answer all {total} questions first — {unansweredCount} remaining.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user