37 lines
1.0 KiB
TypeScript
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);
|
||
|
|
}
|