@@ -20,9 +20,7 @@ interface IProps {
20
20
export function AppContextProvider ( { children } : IProps ) {
21
21
const [ fundamentals , setFundamentals ] = useState < Fundamental [ ] > ( [ ] ) ;
22
22
const [ projects , setProjects ] = useState < Project [ ] > ( [ ] ) ;
23
- const [ completedQuizzesSlugs , setCompletedQuizzesSlugs ] = useState < string [ ] > (
24
- [ ] ,
25
- ) ;
23
+ const [ completedQuizzesIds , setCompletedQuizzesIds ] = useState < string [ ] > ( [ ] ) ;
26
24
const [ sessionDataUser , setSessionDataUser ] = useState < any > ( null ) ;
27
25
28
26
const { data : sessionData } = useSession ( ) ;
@@ -51,8 +49,11 @@ export function AppContextProvider({ children }: IProps) {
51
49
52
50
useEffect ( ( ) => {
53
51
if ( completedQuizzesAllData ) {
54
- const slugs = completedQuizzesAllData . map ( ( quiz : any ) => quiz . lesson ) ;
55
- if ( slugs !== completedQuizzesSlugs ) setCompletedQuizzesSlugs ( slugs ) ;
52
+ const completedIds = completedQuizzesAllData . map (
53
+ ( quiz : any ) => quiz . lesson ,
54
+ ) ; // DEV_NOTE: the -lesson- field now is the lessonId
55
+ if ( completedIds !== completedQuizzesIds )
56
+ setCompletedQuizzesIds ( completedIds ) ;
56
57
}
57
58
// eslint-disable-next-line react-hooks/exhaustive-deps
58
59
} , [ completedQuizzesAllData ] ) ;
@@ -77,23 +78,34 @@ export function AppContextProvider({ children }: IProps) {
77
78
useEffect ( ( ) => {
78
79
void fetchFromDirs ( ) ;
79
80
} , [ ] ) ;
81
+ 0 ;
82
+
83
+ // - Get All lessons to get the Id's
84
+ const { data : allLessonsData } = api . lessons . getAll . useQuery ( ) ;
80
85
81
86
useEffect ( ( ) => {
82
- if ( projects && completedQuizzesSlugs . length !== 0 ) {
87
+ if ( allLessonsData && projects && completedQuizzesIds . length !== 0 ) {
83
88
const projectsWithCompleteStatus = projects . map ( ( lesson ) => {
84
- const completed = completedQuizzesSlugs . includes ( lesson . slug ) ;
89
+ const currentLessonId = allLessonsData . find (
90
+ ( lessonData ) =>
91
+ lessonData . lessonNumber . toString ( ) === lesson . slug . toString ( ) , // DEV_NOTE: forcing .toString() to avoid type errors
92
+ ) ?. id ;
93
+
94
+ const completed = currentLessonId
95
+ ? completedQuizzesIds . includes ( currentLessonId )
96
+ : false ; // DEV_NOTE: if the lesson is not found, it is not completed
85
97
return { ...lesson , completed } ;
86
98
} ) ;
87
99
88
100
setProjects ( projectsWithCompleteStatus ) ;
89
101
}
90
102
// eslint-disable-next-line react-hooks/exhaustive-deps
91
- } , [ completedQuizzesSlugs ] ) ;
103
+ } , [ completedQuizzesIds ] ) ;
92
104
93
105
return (
94
106
< AppContext . Provider
95
107
value = { {
96
- completedQuizzesSlugs ,
108
+ completedQuizzesIds ,
97
109
projects,
98
110
fundamentals,
99
111
} }
0 commit comments