diff --git a/src/App.tsx b/src/App.tsx index c996436..95a7847 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,9 +7,14 @@ import PlatformSelector from "./components/PlatformSelector"; import { Platform } from "./hooks/useGames"; import { Genre } from "./hooks/useGenres"; + +export interface GameQuery { + genre: Genre | null; + platform: Platform | null; +} + function App() { - const [selectedGenre, setSelectedGenre] = useState(null); - const [selectedPlatform, setSelectedPlatform] = useState(null); + const [gameQuery, setGameQuery] = useState({} as GameQuery); return ( - setSelectedGenre(genre)} /> + setGameQuery({ ...gameQuery, genre})} /> - setSelectedPlatform(platform) } /> - + setGameQuery({ ...gameQuery, platform}) } /> + ); diff --git a/src/components/GameGrid.tsx b/src/components/GameGrid.tsx index d938b72..f05267f 100644 --- a/src/components/GameGrid.tsx +++ b/src/components/GameGrid.tsx @@ -1,4 +1,5 @@ import { SimpleGrid, Text } from "@chakra-ui/react"; +import { GameQuery } from "../App"; import useGames, { Platform } from "../hooks/useGames"; import { Genre } from "../hooks/useGenres"; import GameCard from "./GameCard"; @@ -6,12 +7,11 @@ import GameCardContainer from "./GameCardContainer"; import GameCardSkeleton from "./GameCardSkeleton"; interface Props { - selectedGenre: Genre | null; - selectedPlatform: Platform | null; + gameQuery: GameQuery } -const GameGrid = ({ selectedGenre, selectedPlatform }: Props) => { - const { data, error, isLoading } = useGames(selectedGenre, selectedPlatform); +const GameGrid = ({ gameQuery }: Props) => { + const { data, error, isLoading } = useGames(gameQuery); const skeletons = [1, 2, 3, 4, 5, 6]; return ( diff --git a/src/hooks/useGames.ts b/src/hooks/useGames.ts index a215776..c236f29 100644 --- a/src/hooks/useGames.ts +++ b/src/hooks/useGames.ts @@ -1,3 +1,4 @@ +import { GameQuery } from "../App"; import useData from "./useData"; import { Genre } from "./useGenres"; @@ -15,19 +16,16 @@ export interface Game { metacritic: number; } -const useGames = ( - selectedGenre: Genre | null, - selectedPlatform: Platform | null -) => +const useGames = (gameQuery: GameQuery) => useData( "/games", { params: { - genres: selectedGenre?.id, - platforms: selectedPlatform?.id, + genres: gameQuery.genre?.id, + platforms: gameQuery.platform?.id, }, }, - [selectedGenre?.id, selectedPlatform?.id] + [gameQuery] ); export default useGames;