fix(course): treat null isUnlocked as unlocked in progression logic
Items with isUnlocked = null were evaluated as teacher-locked due to `?? false` defaulting to false before negation. This caused content to appear locked immediately after a student marked a lesson complete, even in free-mode courses. Changed to `?? true` in both client-side (progression-utils.ts) and server-side (core/progression.ts) so null/undefined isUnlocked defaults to unlocked — consistent with the sidebar's own `?? true` guard.
This commit is contained in:
@@ -43,7 +43,7 @@ function computeProgressionAccess(
|
||||
let priorBlockingComplete = true;
|
||||
|
||||
for (const item of navigableItems) {
|
||||
const teacherLocked = !(item.isUnlocked ?? false);
|
||||
const teacherLocked = !(item.isUnlocked ?? true);
|
||||
const progressionLocked = progressionMode === 'sequential' && !priorBlockingComplete;
|
||||
|
||||
let accessible = !teacherLocked && !progressionLocked;
|
||||
|
||||
@@ -105,7 +105,7 @@ function annotateNavigableAccess(params: {
|
||||
for (const item of params.navigableItems) {
|
||||
const lessonPolicy = params.lessonPolicyById.get(item.id);
|
||||
const exercisePolicy = params.exercisePolicyById.get(item.id);
|
||||
const teacherLocked = !(item.isUnlocked ?? false);
|
||||
const teacherLocked = !(item.isUnlocked ?? true);
|
||||
const progressionLocked = params.progressionMode === 'sequential' && !priorBlockingComplete;
|
||||
|
||||
let accessible = !teacherLocked && !progressionLocked;
|
||||
|
||||
Reference in New Issue
Block a user