mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Add global Api hooks
This commit is contained in:
parent
b37766e273
commit
f7fcf44f94
10 changed files with 222 additions and 0 deletions
1
src/hooks/api/libraryHooks/index.ts
Normal file
1
src/hooks/api/libraryHooks/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * from './useGetDownload';
|
38
src/hooks/api/libraryHooks/useGetDownload.ts
Normal file
38
src/hooks/api/libraryHooks/useGetDownload.ts
Normal file
|
@ -0,0 +1,38 @@
|
|||
import type { AxiosRequestConfig } from 'axios';
|
||||
import type { LibraryApiGetDownloadRequest } from '@jellyfin/sdk/lib/generated-client';
|
||||
import { getLibraryApi } from '@jellyfin/sdk/lib/utils/api/library-api';
|
||||
import { queryOptions, useQuery } from '@tanstack/react-query';
|
||||
import { type JellyfinApiContext, useApi } from 'hooks/useApi';
|
||||
|
||||
const getDownload = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LibraryApiGetDownloadRequest,
|
||||
options?: AxiosRequestConfig
|
||||
) => {
|
||||
const { api, user } = apiContext;
|
||||
if (!api) throw new Error('No API instance available');
|
||||
if (!user?.Id) throw new Error('No User ID provided');
|
||||
|
||||
const response = await getLibraryApi(api).getDownload(
|
||||
params,
|
||||
options
|
||||
);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const getDownloadQuery = (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LibraryApiGetDownloadRequest
|
||||
) => queryOptions({
|
||||
queryKey: ['Download', params.itemId],
|
||||
queryFn: ({ signal }) =>
|
||||
getDownload(apiContext, params, { signal }),
|
||||
enabled: !!apiContext.api && !!apiContext.user?.Id && !!params.itemId
|
||||
});
|
||||
|
||||
export const useGetDownload = (
|
||||
params: LibraryApiGetDownloadRequest
|
||||
) => {
|
||||
const apiContext = useApi();
|
||||
return useQuery(getDownloadQuery(apiContext, params));
|
||||
};
|
5
src/hooks/api/liveTvHooks/index.ts
Normal file
5
src/hooks/api/liveTvHooks/index.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
export * from './useCancelSeriesTimer';
|
||||
export * from './useCancelTimer';
|
||||
export * from './useGetChannel';
|
||||
export * from './useGetSeriesTimer';
|
||||
export * from './useGetTimer';
|
23
src/hooks/api/liveTvHooks/useCancelSeriesTimer.ts
Normal file
23
src/hooks/api/liveTvHooks/useCancelSeriesTimer.ts
Normal file
|
@ -0,0 +1,23 @@
|
|||
import type { LiveTvApiCancelSeriesTimerRequest } from '@jellyfin/sdk/lib/generated-client';
|
||||
import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api';
|
||||
import { useMutation } from '@tanstack/react-query';
|
||||
import { type JellyfinApiContext, useApi } from 'hooks/useApi';
|
||||
|
||||
const cancelSeriesTimer = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiCancelSeriesTimerRequest
|
||||
) => {
|
||||
const { api } = apiContext;
|
||||
if (api) {
|
||||
const response = await getLiveTvApi(api).cancelSeriesTimer(params);
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
export const useCancelSeriesTimer = () => {
|
||||
const apiContext = useApi();
|
||||
return useMutation({
|
||||
mutationFn: (params: LiveTvApiCancelSeriesTimerRequest) =>
|
||||
cancelSeriesTimer(apiContext, params)
|
||||
});
|
||||
};
|
23
src/hooks/api/liveTvHooks/useCancelTimer.ts
Normal file
23
src/hooks/api/liveTvHooks/useCancelTimer.ts
Normal file
|
@ -0,0 +1,23 @@
|
|||
import type { LiveTvApiCancelTimerRequest } from '@jellyfin/sdk/lib/generated-client';
|
||||
import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api';
|
||||
import { useMutation } from '@tanstack/react-query';
|
||||
import { type JellyfinApiContext, useApi } from 'hooks/useApi';
|
||||
|
||||
const cancelTimer = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiCancelTimerRequest
|
||||
) => {
|
||||
const { api } = apiContext;
|
||||
if (api) {
|
||||
const response = await getLiveTvApi(api).cancelTimer(params);
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
export const useCancelTimer = () => {
|
||||
const apiContext = useApi();
|
||||
return useMutation({
|
||||
mutationFn: (params: LiveTvApiCancelTimerRequest) =>
|
||||
cancelTimer(apiContext, params)
|
||||
});
|
||||
};
|
40
src/hooks/api/liveTvHooks/useGetChannel.ts
Normal file
40
src/hooks/api/liveTvHooks/useGetChannel.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
import type { AxiosRequestConfig } from 'axios';
|
||||
import type { LiveTvApiGetChannelRequest } 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 getChannel = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiGetChannelRequest,
|
||||
options?: AxiosRequestConfig
|
||||
) => {
|
||||
const { api, user } = apiContext;
|
||||
if (!api) throw new Error('No API instance available');
|
||||
if (!user?.Id) throw new Error('No User ID provided');
|
||||
|
||||
const response = await getLiveTvApi(api).getChannel(
|
||||
{
|
||||
userId: user.Id,
|
||||
...params
|
||||
},
|
||||
options
|
||||
);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const getChannelQuery = (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiGetChannelRequest
|
||||
) => queryOptions({
|
||||
queryKey: ['Channel', params.channelId],
|
||||
queryFn: ({ signal }) => getChannel(apiContext, params, { signal }),
|
||||
enabled: !!apiContext.api && !!apiContext.user?.Id && !!params.channelId
|
||||
});
|
||||
|
||||
export const useGetChannel = (
|
||||
params: LiveTvApiGetChannelRequest
|
||||
) => {
|
||||
const apiContext = useApi();
|
||||
return useQuery(getChannelQuery(apiContext, params));
|
||||
};
|
34
src/hooks/api/liveTvHooks/useGetSeriesTimer.ts
Normal file
34
src/hooks/api/liveTvHooks/useGetSeriesTimer.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
import type { AxiosRequestConfig } from 'axios';
|
||||
import type { LiveTvApiGetSeriesTimerRequest } 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 getSeriesTimer = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiGetSeriesTimerRequest,
|
||||
options?: AxiosRequestConfig
|
||||
) => {
|
||||
const { api } = apiContext;
|
||||
if (!api) throw new Error('No API instance available');
|
||||
const response = await getLiveTvApi(api).getSeriesTimer(
|
||||
params,
|
||||
options
|
||||
);
|
||||
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const getSeriesTimerQuery = (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: LiveTvApiGetSeriesTimerRequest
|
||||
) => queryOptions({
|
||||
queryKey: ['SeriesTimer', params.timerId],
|
||||
queryFn: ({ signal }) => getSeriesTimer(apiContext, params, { signal }),
|
||||
enabled: !!apiContext.api && !!apiContext.user?.Id && !!params.timerId
|
||||
});
|
||||
|
||||
export const useGetSeriesTimer = (requestParameters: LiveTvApiGetSeriesTimerRequest) => {
|
||||
const apiContext = useApi();
|
||||
return useQuery(getSeriesTimerQuery(apiContext, requestParameters));
|
||||
};
|
34
src/hooks/api/liveTvHooks/useGetTimer.ts
Normal file
34
src/hooks/api/liveTvHooks/useGetTimer.ts
Normal 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));
|
||||
};
|
1
src/hooks/api/videosHooks/index.ts
Normal file
1
src/hooks/api/videosHooks/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * from './useDeleteAlternateSources';
|
23
src/hooks/api/videosHooks/useDeleteAlternateSources.ts
Normal file
23
src/hooks/api/videosHooks/useDeleteAlternateSources.ts
Normal file
|
@ -0,0 +1,23 @@
|
|||
import type { VideosApiDeleteAlternateSourcesRequest } from '@jellyfin/sdk/lib/generated-client';
|
||||
import { getVideosApi } from '@jellyfin/sdk/lib/utils/api/videos-api';
|
||||
import { useMutation } from '@tanstack/react-query';
|
||||
import { type JellyfinApiContext, useApi } from 'hooks/useApi';
|
||||
|
||||
const deleteAlternateSources = async (
|
||||
apiContext: JellyfinApiContext,
|
||||
params: VideosApiDeleteAlternateSourcesRequest
|
||||
) => {
|
||||
const { api } = apiContext;
|
||||
if (api) {
|
||||
const response = await getVideosApi(api).deleteAlternateSources(params);
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
export const useDeleteAlternateSources = () => {
|
||||
const apiContext = useApi();
|
||||
return useMutation({
|
||||
mutationFn: (params: VideosApiDeleteAlternateSourcesRequest) =>
|
||||
deleteAlternateSources(apiContext, params)
|
||||
});
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue