mirror of https://github.com/morpheus65535/bazarr
80 lines
1.9 KiB
TypeScript
80 lines
1.9 KiB
TypeScript
import {
|
|
QueryClient,
|
|
useMutation,
|
|
useQuery,
|
|
useQueryClient,
|
|
} from "react-query";
|
|
import { usePaginationQuery } from "../queries/hooks";
|
|
import { QueryKeys } from "../queries/keys";
|
|
import api from "../raw";
|
|
|
|
function cacheSeries(client: QueryClient, series: Item.Series[]) {
|
|
series.forEach((item) => {
|
|
client.setQueryData([QueryKeys.Series, item.sonarrSeriesId], item);
|
|
});
|
|
}
|
|
|
|
export function useSeriesByIds(ids: number[]) {
|
|
const client = useQueryClient();
|
|
return useQuery([QueryKeys.Series, ...ids], () => api.series.series(ids), {
|
|
onSuccess: (data) => {
|
|
cacheSeries(client, data);
|
|
},
|
|
});
|
|
}
|
|
|
|
export function useSeriesById(id: number) {
|
|
return useQuery([QueryKeys.Series, id], async () => {
|
|
const response = await api.series.series([id]);
|
|
return response.length > 0 ? response[0] : undefined;
|
|
});
|
|
}
|
|
|
|
export function useSeries() {
|
|
const client = useQueryClient();
|
|
return useQuery(
|
|
[QueryKeys.Series, QueryKeys.All],
|
|
() => api.series.series(),
|
|
{
|
|
onSuccess: (data) => {
|
|
cacheSeries(client, data);
|
|
},
|
|
}
|
|
);
|
|
}
|
|
|
|
export function useSeriesPagination() {
|
|
return usePaginationQuery([QueryKeys.Series], (param) =>
|
|
api.series.seriesBy(param)
|
|
);
|
|
}
|
|
|
|
export function useSeriesModification() {
|
|
const client = useQueryClient();
|
|
return useMutation(
|
|
[QueryKeys.Series],
|
|
(form: FormType.ModifyItem) => api.series.modify(form),
|
|
{
|
|
onSuccess: (_, form) => {
|
|
form.id.forEach((v) => {
|
|
client.invalidateQueries([QueryKeys.Series, v]);
|
|
});
|
|
client.invalidateQueries([QueryKeys.Series]);
|
|
},
|
|
}
|
|
);
|
|
}
|
|
|
|
export function useSeriesAction() {
|
|
const client = useQueryClient();
|
|
return useMutation(
|
|
[QueryKeys.Actions, QueryKeys.Series],
|
|
(form: FormType.SeriesAction) => api.series.action(form),
|
|
{
|
|
onSuccess: () => {
|
|
client.invalidateQueries([QueryKeys.Series]);
|
|
},
|
|
}
|
|
);
|
|
}
|