import { AutoCompleteItem } from "@/apis/autoCompleteApi"; import { getSearchResults, SearchResultItem } from "@/apis/searchApi"; import styles from "@/app/tabStyles/indexStyles"; import { useDiscoveryContext } from "@/contexts/DiscoveryContext"; import { FontAwesome } from "@expo/vector-icons"; import Feather from "@expo/vector-icons/Feather"; import React from "react"; import { Keyboard, ScrollView, Text, TextInput, TouchableOpacity, View } from "react-native"; export default function TabTwoScreen() { const { query, setQuery, suggestions } = useDiscoveryContext(); const [tags, setTags] = React.useState([]); const [searchResults, setSearchResults] = React.useState([]); const getIconName = (type: AutoCompleteItem["type"]) => { switch (type) { case "PERSON": return "user"; case "SHOW": return "television"; case "YEAR": return "calendar"; default: return "tag"; } }; function tagAdded(tag: AutoCompleteItem) { console.log("Tag added:", tag); const nextTags = tags.some((t) => t.text === tag.text) ? tags : [...tags, tag]; setTags(nextTags); const tagStrings = nextTags.map((t) => t.text); getSearchResults(tagStrings, 20) .then(setSearchResults) .catch(console.error); setQuery(""); Keyboard.dismiss(); console.log("Searching with tags:", tagStrings); } return ( Durchsuchen console.log("Search:", query)} autoCapitalize="none" /> {query.length === 0 ? ( ) : ( setQuery("")} /> )} {tags.map((tag) => ( setTags((prev) => prev.filter((t) => t.text !== tag.text)) } > {tag.text} ))} {query.length > 0 && ( Suchvorschläge {suggestions.map((suggestion, idx) => ( { tagAdded(suggestion); }} > {suggestion.text} ))} )} {searchResults.map((result: SearchResultItem, idx) => { switch (result.type) { case "PERSON": return ( {/* Text */} {result.data.name || "Unbekannt"} ({"25"}) aus: {"unterscheidlichen Shows"} {/* Chevron */} ); case "SHOW": return ( {result.data.title} (Show) ); default: return null; } })} ); }