11import React from 'react' ;
22import { observer } from "mobx-react-lite" ;
3+ import { useState } from 'react' ;
4+ import CoursePagePopup from '../views/Components/CoursePagePopup.jsx' ;
5+ import PrerequisitePresenter from './PrerequisitePresenter.jsx' ;
36import SearchbarView from "../views/SearchbarView.jsx" ;
47
58const SearchbarPresenter = observer ( ( { model } ) => {
@@ -12,21 +15,54 @@ const SearchbarPresenter = observer(({ model }) => {
1215 model . setCurrentSearch ( searchResults ) ;
1316 }
1417
18+ const addFavourite = ( course ) => {
19+ model . addFavourite ( course ) ;
20+ }
1521 const removeFavourite = ( course ) => {
1622 model . removeFavourite ( course ) ;
1723 }
24+ const handleFavouriteClick = ( course ) => {
25+ if ( model . favourites . some ( fav => fav . code === course . code ) ) {
26+ model . removeFavourite ( course ) ;
27+ } else {
28+ model . addFavourite ( course ) ;
29+ }
30+ } ;
31+
1832
19- function removeAllFavourites ( ) {
33+ function removeAllFavourites ( ) {
2034 model . setFavourite ( [ ] ) ;
2135 }
2236
37+ const [ isPopupOpen , setIsPopupOpen ] = useState ( false ) ;
38+ const [ selectedCourse , setSelectedCourse ] = useState ( null ) ;
39+ const preP = < PrerequisitePresenter model = { model } selectedCourse = { selectedCourse } />
40+
41+ const popup = < CoursePagePopup
42+ favouriteCourses = { model . favourites }
43+ addFavourite = { addFavourite }
44+ removeFavourite = { removeFavourite }
45+ handleFavouriteClick = { handleFavouriteClick }
46+ isOpen = { isPopupOpen } onClose = { ( ) => setIsPopupOpen ( false ) }
47+ course = { selectedCourse }
48+ prerequisiteTree = { preP } />
49+
50+
51+
52+
2353 return (
2454 < SearchbarView
2555 model = { model }
2656 searchCourses = { searchCourses }
27- favouriteCourses = { model . favourites }
28- removeFavourite = { removeFavourite }
57+ favouriteCourses = { model . favourites }
2958 removeAllFavourites = { removeAllFavourites }
59+ addFavourite = { addFavourite }
60+ removeFavourite = { removeFavourite }
61+ isPopupOpen = { isPopupOpen }
62+ setIsPopupOpen = { setIsPopupOpen }
63+ setSelectedCourse = { setSelectedCourse }
64+ popup = { popup }
65+ handleFavouriteClick = { handleFavouriteClick }
3066 />
3167 ) ;
3268} ) ;
0 commit comments