Files
classroomio/apps/dashboard/src/lib/features/course/utils/content-completion.ts
T
Rotimi Best 52d9bf18c3 feat: add sequential progression and video watch lesson completion
Gate student content by completion order, track per-video watch progress
with seek enforcement, and auto-complete lessons at the configured
threshold. Show ring progress in the lesson header, keep watch progress
on rewatch, and sync progression locks client-side so the next item
unlocks after completion.
2026-06-11 14:48:34 +01:00

37 lines
1.0 KiB
TypeScript

import { ContentType } from '@cio/utils/constants/content';
import type { Course } from './types';
import { syncProgressionAccessToCourse } from './progression-utils';
export function updateLessonCompletionInCourseContent(course: Course, lessonId: string, isComplete: boolean): Course {
if (!course.content) return course;
let updatedCourse: Course;
if (course.content.grouped) {
updatedCourse = {
...course,
content: {
...course.content,
sections: course.content.sections.map((section) => ({
...section,
items: section.items.map((item) =>
item.type === ContentType.Lesson && item.id === lessonId ? { ...item, isComplete } : item
)
}))
}
};
} else {
updatedCourse = {
...course,
content: {
...course.content,
items: course.content.items.map((item) =>
item.type === ContentType.Lesson && item.id === lessonId ? { ...item, isComplete } : item
)
}
};
}
return syncProgressionAccessToCourse(updatedCourse);
}