Add global Api hooks
This commit is contained in:
@@ -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));
|
||||
};
|
||||
Reference in New Issue
Block a user