import { useQuery } from "@tanstack/react-query"; import { apiAtom } from "@/providers/JellyfinProvider"; import { useAtom } from "jotai"; import { getSessionApi } from "@jellyfin/sdk/lib/utils/api/session-api"; import { userAtom } from "@/providers/JellyfinProvider"; export interface useSessionsProps { refetchInterval: number; activeWithinSeconds: number; } export const useSessions = ({ refetchInterval = 5 * 1000, activeWithinSeconds = 360 }: useSessionsProps) => { const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); const { data, isLoading } = useQuery({ queryKey: ["sessions"], queryFn: async () => { if (!api || !user || !user.Policy?.IsAdministrator) { return []; } const response = await getSessionApi(api).getSessions({ activeWithinSeconds: activeWithinSeconds, }); return response.data .filter((s) => s.NowPlayingItem) .sort((a, b) => (b.NowPlayingItem?.Name ?? "").localeCompare(a.NowPlayingItem?.Name ?? "")); }, refetchInterval: refetchInterval, }); return { sessions: data, isLoading }; };