@@ -66,23 +66,9 @@ const addCourse = async () => {
6666 return ;
6767 }
6868
69- if ( courses . length > 0 ) {
70- setCourses ( [
71- ...courses ,
72- {
73- id : courses [ courses . length - 1 ] . id + 1 ,
74- courseNum : newCourse ( ) ,
75- seatAvailable : false ,
76- waitlistAvailable : false ,
77- valid : true ,
78- } ,
79- ] ) ;
80- return ;
81- }
82-
8369 setCourses ( [
70+ ...courses ,
8471 {
85- id : 1 ,
8672 courseNum : newCourse ( ) ,
8773 seatAvailable : false ,
8874 waitlistAvailable : false ,
@@ -102,41 +88,61 @@ const App = () => {
10288 }
10389 } ) ;
10490
105- const saveCourses = ( ) => {
106- checkCoursesValid ( ) ;
107- localStorage . setItem ( "courses" , JSON . stringify ( courses ) ) ;
91+ const saveCourses = async ( ) => {
92+ console . log ( courses ) ;
93+ const loadToast = toast . loading ( "Saving courses..." ) ;
94+
95+ if ( courses . length == 0 ) {
96+ toast . error ( "No courses to save/fetch!" ) ;
97+ return false ;
98+ }
99+
100+ await checkCoursesValid ( ) . then ( ( ) => {
101+ localStorage . setItem ( "courses" , JSON . stringify ( courses ) ) ;
102+ } ) ;
103+
104+ toast . success ( "Course CRNs saved!" ) ;
105+ console . log ( "Course CRNs saved!" ) ;
106+ toast . remove ( loadToast ) ;
107+
108+ return true ;
108109 } ;
109110
110111 const checkCoursesValid = async ( ) => {
111- let invalidCoursesIdx : number [ ] = [ ] ;
112+ let invalidCourses : number [ ] = [ ] ;
113+ let validCourses : number [ ] = [ ] ;
112114
113115 console . log ( courses ) ;
114116
115117 for ( let i = 0 ; i < courses . length ; i ++ ) {
116118 const courseExists = await checkCourseExists ( courses [ i ] . courseNum ) ;
117119 if ( ! courseExists ) {
118- invalidCoursesIdx . push ( i ) ;
119- console . log ( i ) ;
120+ invalidCourses . push ( i ) ;
121+ console . log ( `Course CRN ${ courses [ i ] . courseNum } is invalid!` ) ;
122+ } else {
123+ validCourses . push ( i ) ;
124+ console . log ( `Course CRN ${ courses [ i ] . courseNum } is valid!` ) ;
120125 }
121126 }
122127
123- console . log ( "invalid!" ) ;
128+ for ( let i = 0 ; i < invalidCourses . length ; i ++ ) {
129+ console . log ( invalidCourses [ i ] ) ;
130+ setCourses ( invalidCourses [ i ] , { valid : false } ) ;
131+ }
124132
125- for ( let i = 0 ; i < invalidCoursesIdx . length ; i ++ ) {
126- console . log ( invalidCoursesIdx [ i ] ) ;
127- setCourses ( invalidCoursesIdx [ i ] , { valid : false } ) ;
133+ for ( let i = 0 ; i < validCourses . length ; i ++ ) {
134+ console . log ( validCourses [ i ] ) ;
135+ setCourses ( validCourses [ i ] , { valid : true } ) ;
128136 }
129137 } ;
130138
131139 const getData = async ( ) => {
132- if ( courses . length == 0 ) {
133- toast . error ( "Add a course before fetching data!" ) ;
140+ if ( ! ( await saveCourses ( ) ) ) {
134141 return ;
135142 }
136143
137144 setData ( "Loading" ) ;
138- toast . loading ( "Fetching your data" ) ;
139- checkCoursesValid ( ) ;
145+ const loadToast = toast . loading ( "Fetching your data" ) ;
140146
141147 const courseArr = courses
142148 . filter ( ( el : Course ) => {
@@ -149,7 +155,7 @@ const App = () => {
149155 console . log ( courseArr ) ;
150156 setData ( await get_courses ( courseArr ) ) ;
151157
152- toast . remove ( ) ;
158+ toast . remove ( loadToast ) ;
153159 toast . success ( "Retrieved!" ) ;
154160 } ;
155161
@@ -167,14 +173,16 @@ const App = () => {
167173 type = "number"
168174 onChange = { async ( e ) => {
169175 const idx = courses . findIndex (
170- ( el : Course ) => el . id === course . id
176+ ( el : Course ) => el . courseNum === course . courseNum
171177 ) ;
172178 setCourses ( idx , { courseNum : e . target . value as number } ) ;
173179 } }
174180 />
175181 < button
176182 onClick = { ( ) => {
177- setCourses ( courses . filter ( ( el : any ) => el . id !== course . id ) ) ;
183+ setCourses (
184+ courses . filter ( ( el : any ) => el . courseNum !== course . courseNum )
185+ ) ;
178186 } }
179187 >
180188 & #10060 Remove
0 commit comments