mirror of
https://github.com/frappe/lms.git
synced 2026-05-02 13:39:31 +03:00
fix(scorm): save_progress no longer impended by race condition
(cherry picked from commit 89505eac7d)
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user