From 3bde693618029f8570567d72996e85acff885440 Mon Sep 17 00:00:00 2001 From: lostb1t Date: Thu, 6 Nov 2025 12:59:56 +0100 Subject: [PATCH] Update useItemQuery.ts --- hooks/useItemQuery.ts | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/hooks/useItemQuery.ts b/hooks/useItemQuery.ts index 81c7f41e..456035c0 100644 --- a/hooks/useItemQuery.ts +++ b/hooks/useItemQuery.ts @@ -1,31 +1,43 @@ import { getUserLibraryApi } from "@jellyfin/sdk/lib/utils/api"; +import { ItemFields } from "@jellyfin/sdk/lib/generated-client/models"; import { useQuery } from "@tanstack/react-query"; import { useAtom } from "jotai"; import { useDownload } from "@/providers/DownloadProvider"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; -export const useItemQuery = (itemId: string, isOffline: boolean) => { +export const useItem = ( + itemId: string | undefined, + fields?: ItemFields[], + isOffline?: boolean +) => { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); const { getDownloadedItemById } = useDownload(); return useQuery({ - queryKey: ["item", itemId], + queryKey: ["item", itemId, fields], queryFn: async () => { + if (!itemId) throw new Error('Item ID is required'); + if (isOffline) { return getDownloadedItemById(itemId)?.item; } - if (!api || !user || !itemId) return null; - const res = await getUserLibraryApi(api).getItem({ - itemId: itemId, - userId: user?.Id, + + if (!api || !user) return null; + + const response = await getUserLibraryApi(api).getItem({ + itemId, + userId: user.Id, + ...(fields && { fields }), }); - return res.data; + + return response.data; }, + enabled: !!itemId, staleTime: 0, refetchOnMount: true, refetchOnWindowFocus: true, refetchOnReconnect: true, networkMode: "always", }); -}; +}; \ No newline at end of file