import { Input } from "@/components/common/Input"; import { Text } from "@/components/common/Text"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { Ionicons } from "@expo/vector-icons"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { getSearchApi } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; import { router } from "expo-router"; import { useAtom } from "jotai"; import React, { useState } from "react"; import { ScrollView, TouchableOpacity, View } from "react-native"; export default function search() { const [search, setSearch] = useState(""); const [totalResults, setTotalResults] = useState(0); const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); // useEffect(() => { // (async () => { // if (!api || search.length === 0) return; // const searchApi = await getSearchApi(api).getSearchHints({ // searchTerm: search, // limit: 10, // includeItemTypes: ["Movie"], // }); // const data = searchApi.data; // setTotalResults(data.TotalRecordCount || 0); // setData(data.SearchHints || []); // })(); // }, [search]); const { data } = useQuery({ queryKey: ["search", search], queryFn: async () => { if (!api || !user || search.length === 0) return []; const searchApi = await getSearchApi(api).getSearchHints({ searchTerm: search, limit: 10, includeItemTypes: ["Movie"], }); return searchApi.data.SearchHints; }, }); return ( setSearch(text)} /> {data?.map((item, index) => ( ))} ); } type RenderItemProps = { item: BaseItemDto; }; const RenderItem: React.FC = ({ item }) => { return ( router.push(`/(auth)/items/${item.Id}/page`)} className="flex flex-row items-center justify-between p-4 bg-neutral-900 border-neutral-800" > {item.Name} {item.Type === "Movie" && ( {item.ProductionYear} )} ); };