@@ -3,7 +3,7 @@ import { produce } from 'immer';
3
3
import { createMigrate } from 'redux-persist' ;
4
4
5
5
import { PersistConfig } from 'storage/persistReducer' ;
6
- import { ModuleCode } from 'types/modules' ;
6
+ import { ClassNo , LessonType , ModuleCode } from 'types/modules' ;
7
7
import { ModuleLessonConfig , SemTimetableConfig , TaModulesConfig } from 'types/timetables' ;
8
8
import { ColorMapping , TimetablesState } from 'types/reducers' ;
9
9
@@ -192,9 +192,13 @@ function semTaModules(state = DEFAULT_TA_STATE, action: Actions): TaModulesConfi
192
192
case ADD_TA_LESSON_IN_TIMETABLE : {
193
193
const { moduleCode, lessonType, classNo } = action . payload ;
194
194
if ( ! ( moduleCode && lessonType && classNo ) ) return state ;
195
+ const newLesson : [ LessonType , ClassNo ] = [ lessonType , classNo ] ;
196
+ const curLessons = state [ moduleCode ] ?? [ ] ;
197
+ // Prevent duplicate lessons
198
+ if ( curLessons . some ( ( lesson ) => isEqual ( lesson , newLesson ) ) ) return state ;
195
199
return {
196
200
...state ,
197
- [ moduleCode ] : [ ...( state [ moduleCode ] ?? [ ] ) , [ lessonType , classNo ] ] ,
201
+ [ moduleCode ] : [ ...curLessons , newLesson ] ,
198
202
} ;
199
203
}
200
204
case REMOVE_TA_LESSON_IN_TIMETABLE : {
0 commit comments