@@ -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,44 +88,61 @@ const App = () => {
10288 }
10389 } ) ;
10490
105- const saveCourses = ( ) => {
106- toast . loading ( "Saving courses..." ) ;
107- checkCoursesValid ( ) ;
108- localStorage . setItem ( "courses" , JSON . stringify ( courses ) ) ;
109- toast . remove ( ) ;
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+
110104 toast . success ( "Course CRNs saved!" ) ;
105+ console . log ( "Course CRNs saved!" ) ;
106+ toast . remove ( loadToast ) ;
107+
108+ return true ;
111109 } ;
112110
113111 const checkCoursesValid = async ( ) => {
114- let invalidCoursesIdx : number [ ] = [ ] ;
112+ let invalidCourses : number [ ] = [ ] ;
113+ let validCourses : number [ ] = [ ] ;
115114
116115 console . log ( courses ) ;
117116
118117 for ( let i = 0 ; i < courses . length ; i ++ ) {
119118 const courseExists = await checkCourseExists ( courses [ i ] . courseNum ) ;
120119 if ( ! courseExists ) {
121- invalidCoursesIdx . push ( i ) ;
122- 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!` ) ;
123125 }
124126 }
125127
126- console . log ( "invalid!" ) ;
128+ for ( let i = 0 ; i < invalidCourses . length ; i ++ ) {
129+ console . log ( invalidCourses [ i ] ) ;
130+ setCourses ( invalidCourses [ i ] , { valid : false } ) ;
131+ }
127132
128- for ( let i = 0 ; i < invalidCoursesIdx . length ; i ++ ) {
129- console . log ( invalidCoursesIdx [ i ] ) ;
130- 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 } ) ;
131136 }
132137 } ;
133138
134139 const getData = async ( ) => {
135- if ( courses . length == 0 ) {
136- toast . error ( "Add a course before fetching data!" ) ;
140+ if ( ! ( await saveCourses ( ) ) ) {
137141 return ;
138142 }
139143
140- saveCourses ( ) ;
141- // setData("Loading");
142- toast . loading ( "Fetching your data" ) ;
144+ setData ( "Loading" ) ;
145+ const loadToast = toast . loading ( "Fetching your data" ) ;
143146
144147 const courseArr = courses
145148 . filter ( ( el : Course ) => {
@@ -152,7 +155,7 @@ const App = () => {
152155 console . log ( courseArr ) ;
153156 setData ( await get_courses ( courseArr ) ) ;
154157
155- toast . remove ( ) ;
158+ toast . remove ( loadToast ) ;
156159 toast . success ( "Retrieved!" ) ;
157160 } ;
158161
@@ -170,14 +173,16 @@ const App = () => {
170173 type = "number"
171174 onChange = { async ( e ) => {
172175 const idx = courses . findIndex (
173- ( el : Course ) => el . id === course . id
176+ ( el : Course ) => el . courseNum === course . courseNum
174177 ) ;
175178 setCourses ( idx , { courseNum : e . target . value as number } ) ;
176179 } }
177180 />
178181 < button
179182 onClick = { ( ) => {
180- setCourses ( courses . filter ( ( el : any ) => el . id !== course . id ) ) ;
183+ setCourses (
184+ courses . filter ( ( el : any ) => el . courseNum !== course . courseNum )
185+ ) ;
181186 } }
182187 >
183188 & #10060 Remove
0 commit comments