import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import '../styles/MainScreenWrapper.css'; import { getAuthHeaders } from '../utils/getAuthHeaders'; import { Professor, Course, Topic, Semester } from "../types/types"; import { getSessionCookie } from '../contexts/session'; interface Filters extends Record { professor: string; course: string; topic: string; } const MainSearch: React.FC = () => { const [filters, setFilters] = useState({ professor: '', course: '', topic: '', }); const [professors, setProfessors] = useState([]); const [courses, setCourses] = useState([]); const [topics, setTopics] = useState([]); const [semesters, setSemesters] = useState([]); const navigate = useNavigate(); useEffect(() => { if (!getSessionCookie()) { return; } // Fetch professors fetchProfessors(); // Fetch courses fetchCourses(); // Fetch topics fetchTopics(); // Fetch semesters fetchSemesters(); }, []); const fetchProfessors = async () => { const token = getSessionCookie(); try { const response = await fetch(`${import.meta.env.VITE_CENTRAL_SERVER}/api/professors/`, { method: 'GET', headers: { 'Authorization': `Token ${token}`, }, }); const data = await response.json(); console.log("HEREEEEEE", data); console.log(response) if (Array.isArray(data)) { setProfessors(data); } else { console.error('Data fetched is not an array:', data); } } catch (error) { console.error('Error fetching professors:', error); } }; const fetchCourses = async () => { try { const response = await fetch(`${import.meta.env.VITE_CENTRAL_SERVER}/api/courses`, { method: 'GET', headers: getAuthHeaders(), }); const data = await response.json(); if (Array.isArray(data)) { setCourses(data); } else { console.error('Data fetched is not an array:', data); } } catch (error) { console.error('Error fetching courses:', error); } }; const fetchTopics = async () => { try { const response = await fetch(`${import.meta.env.VITE_CENTRAL_SERVER}/api/topics`, { method: 'GET', headers: getAuthHeaders(), }); const data = await response.json(); if (Array.isArray(data)) { setTopics(data); } else { console.error('Data fetched is not an array:', data); } } catch (error) { console.error('Error fetching topics:', error); } }; const fetchSemesters = async () => { try { const response = await fetch(`${import.meta.env.VITE_CENTRAL_SERVER}/api/semesters`, { method: 'GET', headers: getAuthHeaders(), }); const data = await response.json(); if (Array.isArray(data)) { setSemesters(data); } else { console.error('Data fetched is not an array:', data); } } catch (error) { console.error('Error fetching courses:', error); } }; const handleChange = (event: React.ChangeEvent) => { const { name, value } = event.target; setFilters((prevFilters: Filters) => ({ ...prevFilters, [name]: value, })); }; const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); const searchParams = new URLSearchParams(filters); navigate(`/results?${searchParams}`); }; return ( <> PeerNotes Logo
); } export default MainSearch;