import { Text } from "@/components/common/Text"; import ContinueWatchingPoster from "@/components/ContinueWatchingPoster"; import { ItemCardText } from "@/components/ItemCardText"; import { Loading } from "@/components/Loading"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { getItemsApi, getSuggestionsApi } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; import { useRouter } from "expo-router"; import { useAtom } from "jotai"; import { ActivityIndicator, ScrollView, TouchableOpacity, View, } from "react-native"; export default function index() { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); const router = useRouter(); const { data, isLoading, isError } = useQuery({ queryKey: ["resumeItems", api, user?.Id], queryFn: async () => { if (!api || !user?.Id) { return []; } const response = await getItemsApi(api).getResumeItems({ userId: user.Id, }); return response.data.Items || []; }, enabled: !!api && !!user?.Id, staleTime: 60, }); const { data: collections } = useQuery({ queryKey: ["collections", user?.Id], queryFn: async () => { if (!api || !user?.Id) { return []; } const data = ( await getItemsApi(api).getItems({ userId: user.Id, }) ).data; return data.Items || []; }, enabled: !!api && !!user?.Id, staleTime: 0, }); const { data: suggestions } = useQuery({ queryKey: ["suggestions", user?.Id], queryFn: async () => { if (!api || !user?.Id) { return []; } const response = await getSuggestionsApi(api).getSuggestions({ userId: user.Id, limit: 5, mediaType: ["Video"], }); return response.data.Items || []; }, enabled: !!api && !!user?.Id, staleTime: 60, }); if (isLoading) return ( ); if (isError) return Error loading items; if (!data || data.length === 0) return No data...; return ( Continue Watching {data.map((item) => ( router.push(`/items/${item.Id}/page`)} className="flex flex-col w-48" > ))} Collections {collections?.map((item) => ( router.push(`/collections/${item.Id}/page`)} className="flex flex-col w-48" > ))} Suggestions {suggestions?.map((item) => ( router.push(`/items/${item.Id}/page`)} className="flex flex-col w-48" > ))} ); }