App.BrowseCars = function BrowseCars() { const [cars, setCars] = React.useState([]); const [categories, setCategories] = React.useState([]); const [activeCategory, setActiveCategory] = React.useState(null); const [loading, setLoading] = React.useState(true); const [search, setSearch] = React.useState(''); const [contentMode, setContentMode] = App.useContentFilter(); React.useEffect(() => { Promise.all([ App.API.get('cars'), App.API.get('categories'), ]).then(([carsData, catsData]) => { setCars(carsData); setCategories(catsData); setLoading(false); }); }, []); let filtered = activeCategory ? cars.filter(c => c.category_id == activeCategory) : cars; if (search) { const q = search.toLowerCase(); filtered = filtered.filter(c => c.name.toLowerCase().includes(q)); } if (contentMode === 'included') { filtered = filtered.filter(c => c.is_free == 1); } const subtitleText = contentMode === 'included' ? filtered.length + ' free cars included with iRacing membership' : filtered.length + ' total cars'; if (loading) return ; return (

Cars

{subtitleText}

setSearch(e.target.value)} />
{filtered.map(car => ( ))}
); };