From c19fbd065621cbbecdc1eafe96d40fb1c4bd89a2 Mon Sep 17 00:00:00 2001
From: Serdar D <serdar-dorak@hotmail.de>
Date: Wed, 24 May 2023 20:07:51 +0200
Subject: [PATCH] Search angepasst.

---
 components/Search.tsx | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/components/Search.tsx b/components/Search.tsx
index 01532ab..8884b09 100644
--- a/components/Search.tsx
+++ b/components/Search.tsx
@@ -1,11 +1,28 @@
+"use client"
+
 import ArrowCircleRightRoundedIcon from '@mui/icons-material/ArrowCircleRightRounded';
 import SearchIcon from '@mui/icons-material/Search';
 import { Container, IconButton, InputAdornment, TextField } from '@mui/material';
+import { useState } from 'react';
+import { getGames } from '@/lib/igdb';
+import { IGame } from '@/types/types';
+import Game from './Game';
+
+export default function Search() {
+    const [searchText, setSearchText] = useState('');
+    const [searchResults, setSearchResults] = useState<IGame[]>([]);
 
-export default function SearchInput() {
-    const handleSearch = (event: { target: { value: any; }; }) => {
+    const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {
         const searchText = event.target.value;
-        console.log('Search:', searchText);
+        setSearchText(searchText);
+    };
+
+    const handleSearchSubmit = async () => {
+        // Suche der Games durch eigene Sucheingaben.
+        const games = await getGames(); // Funktion um die Games aus Datenbank zu getten
+        //Es wird geschaut ob gamename(mit to lower Case), dem suchtext (searchText mit to lower case) entspricht.
+        const filteredGames = games.filter(game => game.name.toLowerCase().includes(searchText.toLowerCase()));
+        setSearchResults(filteredGames);
     };
 
     return (
@@ -14,6 +31,7 @@ export default function SearchInput() {
                 placeholder="Search"
                 variant="outlined"
                 size="small"
+                value={searchText}
                 onChange={handleSearch}
                 InputProps={{
                     startAdornment: (
@@ -23,7 +41,8 @@ export default function SearchInput() {
                     ),
                     endAdornment: (
                         <InputAdornment position="end">
-                            <IconButton edge="end" aria-label="start search">
+                            {/* Gesucht wird erst wenn auf Suche geklickt wird. */}
+                            <IconButton edge="end" aria-label="start search" onClick={handleSearchSubmit}>
                                 <ArrowCircleRightRoundedIcon />
                             </IconButton>
                         </InputAdornment>
@@ -33,6 +52,11 @@ export default function SearchInput() {
                     },
                 }}
             />
+
+            {/* Anzeigen der Suchergebnisse */}
+            {searchResults.map(game => (
+                <Game key={game.id} id={game.id} name={game.name} cover={game.cover} />
+            ))}
         </Container>
     );
-};
\ No newline at end of file
+}
\ No newline at end of file
-- 
GitLab