@@ -106,36 +106,46 @@ const SingleCourse: React.FC = () => {
106
106
( status ) => status . course ?. documentId === course . documentId ,
107
107
) ;
108
108
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
+ }
123
125
124
126
setModuleProgress ( progressMap ) ;
125
127
126
- // Ensure active states are only set if not already
127
128
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
+ }
131
141
132
142
if ( firstIncompleteModule ) {
133
143
setActiveModuleDocumentId ( firstIncompleteModule . documentId ) ;
134
144
setActiveSectionDocumentId (
135
145
course . sections . find ( ( section ) =>
136
146
section . modules . some (
137
147
( module ) =>
138
- module . documentId === firstIncompleteModule . documentId ,
148
+ module . documentId === firstIncompleteModule ? .documentId ,
139
149
) ,
140
150
) ?. documentId || null ,
141
151
) ;
@@ -339,7 +349,7 @@ const SingleCourse: React.FC = () => {
339
349
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"
340
350
>
341
351
< ArrowLeft />
342
- < span className = "text-md font-semibol " > Back to courses</ span >
352
+ < span className = "text-md font-semibold " > Back to courses</ span >
343
353
</ Link >
344
354
< ul className = "mb-6 flex flex-wrap gap-2" >
345
355
{ course . categories . map ( ( category ) => (
0 commit comments