import React, {useState, useRef, useEffect, useLayoutEffect} from 'react'; import {GameState, GameList, useListener} from './GamesUtil'; import {Link} from 'react-router-dom'; import './GamesPage.css'; import Game from './Game'; function GamesPage() { let [search, setSearch] = useState(window.location.search); useEffect(() => { setSearch(window.location.search); }, [window.location.search]) let searchparams = new URLSearchParams(search); let filter = searchparams.get('league') ?? "" let [games, setGames] = useState<[string, GameState][]>([]); useListener(setGames); let filters = useRef(filter !== "" ? [filter] : []); games.forEach((game) => { if (game[1].is_league && !filters.current.includes(game[1].leagueoruser)) { filters.current.push(game[1].leagueoruser) }}); filters.current = filters.current.filter((f) => games.find((game) => game && game[1].is_league && game[1].leagueoruser === f) || f === filter); let gameList = useRef<(string | null)[]>([]); let filterGames = games.filter((game, i) => filter === "" || game[1].leagueoruser === filter); updateList(gameList.current, filterGames, searchparams.get('game')); return ( <> val !== null ? filterGames.find((game) => game[0] === val) as [string, GameState] : null )}/>