Skip to content

Commit ece3cb1

Browse files
Merge pull request #67 from strapi/develop
2 parents cdfa465 + 12a10a8 commit ece3cb1

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

frontend/src/routes/_dashboardLayout/courses/$courseSlug.tsx

+30-20
Original file line numberDiff line numberDiff line change
@@ -106,36 +106,46 @@ const SingleCourse: React.FC = () => {
106106
(status) => status.course?.documentId === course.documentId,
107107
);
108108

109-
if (!courseStatus) return;
110-
111-
const progressMap: Record<string, number> = courseStatus.sections.reduce(
112-
(acc, sectionStatus) => ({
113-
...acc,
114-
...Object.fromEntries(
115-
sectionStatus.modules.map((moduleStatus) => [
116-
moduleStatus.module.documentId,
117-
moduleStatus.progress,
118-
]),
119-
),
120-
}),
121-
{},
122-
);
109+
let progressMap: Record<string, number> = {};
110+
111+
if (courseStatus) {
112+
progressMap = courseStatus.sections.reduce(
113+
(acc, sectionStatus) => ({
114+
...acc,
115+
...Object.fromEntries(
116+
sectionStatus.modules.map((moduleStatus) => [
117+
moduleStatus.module.documentId,
118+
moduleStatus.progress,
119+
]),
120+
),
121+
}),
122+
{},
123+
);
124+
}
123125

124126
setModuleProgress(progressMap);
125127

126-
// Ensure active states are only set if not already
127128
if (!activeModuleDocumentId && !activeSectionDocumentId) {
128-
const firstIncompleteModule = course.sections
129-
.flatMap((section) => section.modules)
130-
.find((module) => (progressMap[module.documentId] || 0) < 100);
129+
let firstIncompleteModule: Module | undefined;
130+
131+
if (courseStatus) {
132+
firstIncompleteModule = course.sections
133+
.flatMap((section) => section.modules)
134+
.find((module) => (progressMap[module.documentId] || 0) < 100);
135+
}
136+
137+
// If no progress or all modules are complete, select the first module
138+
if (!firstIncompleteModule) {
139+
firstIncompleteModule = course.sections[0]?.modules[0];
140+
}
131141

132142
if (firstIncompleteModule) {
133143
setActiveModuleDocumentId(firstIncompleteModule.documentId);
134144
setActiveSectionDocumentId(
135145
course.sections.find((section) =>
136146
section.modules.some(
137147
(module) =>
138-
module.documentId === firstIncompleteModule.documentId,
148+
module.documentId === firstIncompleteModule?.documentId,
139149
),
140150
)?.documentId || null,
141151
);
@@ -339,7 +349,7 @@ const SingleCourse: React.FC = () => {
339349
className="mb-6 flex items-center justify-center gap-2 rounded-3xl border border-slate-400 p-2 px-4 text-left text-black hover:bg-white dark:text-white dark:hover:text-black"
340350
>
341351
<ArrowLeft />
342-
<span className="text-md font-semibol">Back to courses</span>
352+
<span className="text-md font-semibold">Back to courses</span>
343353
</Link>
344354
<ul className="mb-6 flex flex-wrap gap-2">
345355
{course.categories.map((category) => (

0 commit comments

Comments
 (0)