import React, { useState, useEffect } from 'react'; import '../App.css'; import SearchBar from '../components/SearchBar'; import MedicineResults from '../components/MedicineResults'; import PharmacyList from '../components/PharmacyList'; function PublicView() { const [searchQuery, setSearchQuery] = useState(''); const [medicines, setMedicines] = useState([]); const [selectedMedicine, setSelectedMedicine] = useState(null); const [pharmacies, setPharmacies] = useState([]); const [loading, setLoading] = useState(false); useEffect(() => { const searchMedicines = async () => { if (searchQuery.trim().length < 2) { setMedicines([]); setSelectedMedicine(null); setPharmacies([]); return; } setLoading(true); try { const response = await fetch(`/api/medicines/search?q=${encodeURIComponent(searchQuery)}`); const data = await response.json(); setMedicines(data); } catch (error) { console.error('Error searching medicines:', error); } finally { setLoading(false); } }; const timeoutId = setTimeout(searchMedicines, 300); return () => clearTimeout(timeoutId); }, [searchQuery]); useEffect(() => { const fetchPharmacies = async () => { if (!selectedMedicine) { setPharmacies([]); return; } setLoading(true); try { const response = await fetch(`/api/medicines/${selectedMedicine.id}/pharmacies`); const data = await response.json(); setPharmacies(data); } catch (error) { console.error('Error fetching pharmacies:', error); } finally { setLoading(false); } }; fetchPharmacies(); }, [selectedMedicine]); return ( <> 💊 FarmaFinder Find your medicine at nearby pharmacies {loading && Searching...} {searchQuery && !selectedMedicine && ( )} {selectedMedicine && ( {selectedMedicine.name} Active Ingredient: {selectedMedicine.active_ingredient} Dosage: {selectedMedicine.dosage} Form: {selectedMedicine.form} { setSelectedMedicine(null); setPharmacies([]); }} > ← Back to search )} > ); } export default PublicView;
Find your medicine at nearby pharmacies