From 61909c8498147e1c51325559d6e7774c0d97ecc3 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 19 Jan 2026 19:49:05 +0530 Subject: [PATCH] fix: track cmi.completion_status for SCORM 2004 --- frontend/src/pages/SCORMChapter.vue | 38 ++++++++++++++++++----------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/frontend/src/pages/SCORMChapter.vue b/frontend/src/pages/SCORMChapter.vue index 27b18036..93653c12 100644 --- a/frontend/src/pages/SCORMChapter.vue +++ b/frontend/src/pages/SCORMChapter.vue @@ -116,20 +116,30 @@ const debouncedSaveProgress = (scormDetails) => { } const saveDataToLMS = (key, value) => { - if (key === 'cmi.core.lesson_status') { - if (value === 'passed') { - isSuccessfullyCompleted.value = true - saveProgress({ - is_complete: isSuccessfullyCompleted.value, - scorm_content: '', - }) - } else if (value === 'failed' && courseRestartOnFailure) { - saveProgress({ - is_complete: isSuccessfullyCompleted.value, - scorm_content: '', - }) - } - } else if (key === 'cmi.suspend_data' && !isSuccessfullyCompleted.value) { + const isLessonStatus = key === 'cmi.core.lesson_status' && value === 'passed' + const isCompletionStatus = + key === 'cmi.completion_status' && value === 'completed' + const shouldRestart = + (key === 'cmi.core.lesson_status' && value === 'failed') || + (key === 'cmi.completion_status' && value === 'incomplete') + + if (isLessonStatus || isCompletionStatus) { + isSuccessfullyCompleted.value = true + } + + if ( + isLessonStatus || + isCompletionStatus || + (shouldRestart && courseRestartOnFailure) + ) { + saveProgress({ + is_complete: isSuccessfullyCompleted.value, + scorm_content: '', + }) + return + } + + if (key === 'cmi.suspend_data' && !isSuccessfullyCompleted.value) { debouncedSaveProgress({ is_complete: false, scorm_content: value,