From 64cc360dbd24ad2d324a4b51063d809f7cb918d6 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 4 Jun 2026 18:39:49 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20repariere=20initialTotalDue=20in=20SRS-?= =?UTF-8?q?Sitzung=20bei=20ung=C3=BCltigen=20Werten=20und=20verbessere=20F?= =?UTF-8?q?ehlerbehandlung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/dialogues/socialnetwork/VocabPracticeDialog.vue | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frontend/src/dialogues/socialnetwork/VocabPracticeDialog.vue b/frontend/src/dialogues/socialnetwork/VocabPracticeDialog.vue index 2170ba3..3625a01 100644 --- a/frontend/src/dialogues/socialnetwork/VocabPracticeDialog.vue +++ b/frontend/src/dialogues/socialnetwork/VocabPracticeDialog.vue @@ -533,6 +533,15 @@ export default { this.wrongCount = Number(this.srsSession.wrongCount || 0) || 0; } + // If the stored session has an invalid initialTotalDue (e.g. 0), repair it from server/pool data. + if (this.srsSession && (!Number.isFinite(Number(this.srsSession.initialTotalDue)) || Number(this.srsSession.initialTotalDue) <= 0)) { + const repairedTotal = Number.isFinite(Number(this.srsServerTotalDue)) && Number(this.srsServerTotalDue) > 0 ? Number(this.srsServerTotalDue) : dueIds.length; + try { console.debug('[VocabPracticeDialog] repair srsSession.initialTotalDue', { before: this.srsSession.initialTotalDue, repairedTotal }); } catch (_) {} + this.srsSession.initialTotalDue = repairedTotal; + this.srsSession.initialDueIds = Array.isArray(this.srsSession.initialDueIds) && this.srsSession.initialDueIds.length ? this.srsSession.initialDueIds : dueIds; + try { this.saveSrsSession(); } catch (_) {} + } + const doneSet = new Set(Array.isArray(this.srsSession.doneIds) ? this.srsSession.doneIds : []); this.srsQueueIds = dueIds.filter((id) => !doneSet.has(id)); try {