App.BrowseTracks = function BrowseTracks() {
const [tracks, setTracks] = React.useState([]);
const [loading, setLoading] = React.useState(true);
const [search, setSearch] = React.useState('');
const [sortOrder, setSortOrder] = React.useState('a-z');
const [contentMode, setContentMode] = App.useContentFilter();
const [selectedTrack, setSelectedTrack] = React.useState(null);
React.useEffect(() => {
App.API.get('tracks').then(data => {
setTracks(data);
setLoading(false);
});
}, []);
let filtered = search
? tracks.filter(t => t.name.toLowerCase().includes(search.toLowerCase()))
: [...tracks];
filtered.sort((a, b) => {
const cmp = a.name.localeCompare(b.name);
return sortOrder === 'z-a' ? -cmp : cmp;
});
if (contentMode === 'included') {
filtered = filtered.filter(t => t.is_free == 1);
}
const subtitleText = contentMode === 'included'
? filtered.length + ' free tracks included with iRacing membership'
: filtered.length + ' total tracks';
if (loading) return
{subtitleText}