Add global Api hooks

This commit is contained in:
grafixeyehero
2024-09-08 20:12:37 +03:00
parent b37766e273
commit f7fcf44f94
10 changed files with 222 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
import type { AxiosRequestConfig } from 'axios';
import type { LiveTvApiGetTimerRequest } from '@jellyfin/sdk/lib/generated-client';
import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api';
import { queryOptions, useQuery } from '@tanstack/react-query';
import { type JellyfinApiContext, useApi } from 'hooks/useApi';
const getTimer = async (
currentApi: JellyfinApiContext,
params: LiveTvApiGetTimerRequest,
options?: AxiosRequestConfig
) => {
const { api } = currentApi;
if (!api) throw new Error('No API instance available');
const response = await getLiveTvApi(api).getTimer(
params,
options
);
return response.data;
};
export const getTimerQuery = (
apiContext: JellyfinApiContext,
params: LiveTvApiGetTimerRequest
) => queryOptions({
queryKey: ['Timer', params.timerId],
queryFn: ({ signal }) => getTimer(apiContext, params, { signal }),
enabled: !!apiContext.api && !!apiContext.user?.Id && !!params.timerId
});
export const useGetTimer = (requestParameters: LiveTvApiGetTimerRequest) => {
const apiContext = useApi();
return useQuery(getTimerQuery(apiContext, requestParameters));
};