Refactor Study Desk application structure
This commit is contained in:
parent
faaccf8a7e
commit
089439ed90
145 changed files with 8087 additions and 3412 deletions
|
|
@ -25,6 +25,8 @@ interface DeckData {
|
|||
currentIndex: number;
|
||||
orderJson: string;
|
||||
cardResultsJson: string | null;
|
||||
sessionId: string;
|
||||
revision: number;
|
||||
updatedAt: string;
|
||||
}>;
|
||||
}
|
||||
|
|
@ -42,19 +44,24 @@ export default function DeckStudyPage() {
|
|||
async function handleRestart() {
|
||||
if (!deck) return;
|
||||
|
||||
// Clear progress in database for both modes
|
||||
await Promise.all([
|
||||
fetch("/api/progress", {
|
||||
method: "DELETE",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ contentType: "DECK", contentId: deck.id, mode: "SEQUENTIAL" })
|
||||
}).catch(() => {}),
|
||||
fetch("/api/progress", {
|
||||
method: "DELETE",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ contentType: "DECK", contentId: deck.id, mode: "SHUFFLED" })
|
||||
}).catch(() => {})
|
||||
]);
|
||||
const responses = await Promise.all(
|
||||
deck.progress.map((progress) =>
|
||||
fetch("/api/progress", {
|
||||
method: "DELETE",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
contentType: "DECK",
|
||||
contentId: deck.id,
|
||||
mode: progress.mode,
|
||||
sessionId: progress.sessionId,
|
||||
}),
|
||||
})
|
||||
)
|
||||
).catch(() => null);
|
||||
if (!responses || responses.some((response) => !response.ok)) {
|
||||
window.alert("The session could not be restarted. Your saved progress was kept.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear locally and force remount
|
||||
setDeck({ ...deck, progress: [] });
|
||||
|
|
@ -75,7 +82,8 @@ export default function DeckStudyPage() {
|
|||
}, [deckId, classSlug, router]);
|
||||
|
||||
useEffect(() => {
|
||||
fetchDeck();
|
||||
const timer = window.setTimeout(() => void fetchDeck(), 0);
|
||||
return () => window.clearTimeout(timer);
|
||||
}, [fetchDeck]);
|
||||
|
||||
if (loading || !deck) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue