import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import '../styles/MainScreenWrapper.css'; import { getSessionCookie } from '../contexts/session'; import { Professor, Course, Topic } from "../types/types"; 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 navigate = useNavigate(); useEffect(() => { // Fetch professors fetchProfessors(); // Fetch courses fetchCourses(); // Fetch topics fetchTopics(); }, []); const getAuthHeaders = () => { const token = getSessionCookie(); // const token = localStorage.getItem('authToken'); console.log("Using token for API call:", token); return { 'Authorization': `Token ${token}`, 'Content-Type': 'application/json' }; }; const fetchProfessors = async () => { try { const response = await fetch('http://localhost:8000/api/professors', { method: 'GET', headers: getAuthHeaders(), }); const data = await response.json(); console.log("Professors fetched:", data); if (Array.isArray(data)) { console.log("Professors fetched:", 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('http://localhost:8000/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('http://localhost:8000/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 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;