fix(scorm): save_progress no longer impended by race condition

(cherry picked from commit 89505eac7d)
This commit is contained in:
raizasafeel
2026-03-24 15:23:43 +05:30
committed by Mergify
parent 61bd858a69
commit dcbf91990a
2 changed files with 5 additions and 2 deletions
+3 -1
View File
@@ -109,9 +109,10 @@ const getDataFromLMS = (key) => {
let saveTimeout = null
const debouncedSaveProgress = (scormDetails) => {
if (isSuccessfullyCompleted.value) return
clearTimeout(saveTimeout)
saveTimeout = setTimeout(() => {
saveProgress(scormDetails)
if (!isSuccessfullyCompleted.value) saveProgress(scormDetails)
}, 300)
}
@@ -124,6 +125,7 @@ const saveDataToLMS = (key, value) => {
(key === 'cmi.completion_status' && value === 'incomplete')
if (isLessonStatus || isCompletionStatus) {
if (isSuccessfullyCompleted.value) return
isSuccessfullyCompleted.value = true
}
@@ -78,7 +78,7 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None):
if not membership:
return 0
frappe.db.set_value("LMS Enrollment", membership, "current_lesson", lesson)
frappe.db.set_value("LMS Enrollment", membership, "current_lesson", lesson, update_modified=False)
progress_already_exists = frappe.db.exists(
"LMS Course Progress", {"lesson": lesson, "member": frappe.session.user}
)
@@ -133,6 +133,7 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None):
# Had to get doc, as on_change doesn't trigger when you use set_value. The trigger is necessary for badge to get assigned.
enrollment = frappe.get_doc("LMS Enrollment", membership)
enrollment.progress = progress
enrollment.flags.ignore_version = True
enrollment.save()
enrollment.run_method("on_change")