@@ -3,7 +3,7 @@ import { produce } from 'immer';
33import { createMigrate } from 'redux-persist' ;
44
55import { PersistConfig } from 'storage/persistReducer' ;
6- import { ModuleCode } from 'types/modules' ;
6+ import { ClassNo , LessonType , ModuleCode } from 'types/modules' ;
77import { ModuleLessonConfig , SemTimetableConfig , TaModulesConfig } from 'types/timetables' ;
88import { ColorMapping , TimetablesState } from 'types/reducers' ;
99
@@ -192,9 +192,13 @@ function semTaModules(state = DEFAULT_TA_STATE, action: Actions): TaModulesConfi
192192 case ADD_TA_LESSON_IN_TIMETABLE : {
193193 const { moduleCode, lessonType, classNo } = action . payload ;
194194 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 ;
195199 return {
196200 ...state ,
197- [ moduleCode ] : [ ...( state [ moduleCode ] ?? [ ] ) , [ lessonType , classNo ] ] ,
201+ [ moduleCode ] : [ ...curLessons , newLesson ] ,
198202 } ;
199203 }
200204 case REMOVE_TA_LESSON_IN_TIMETABLE : {
0 commit comments