mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-01-16 16:18:09 +00:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { BaseItemDto } from "@jellyfin/sdk/lib/generated-client";
|
|
import { getItemRefreshApi } from "@jellyfin/sdk/lib/utils/api";
|
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { useAtom } from "jotai";
|
|
import { useTranslation } from "react-i18next";
|
|
import { toast } from "sonner-native";
|
|
import { apiAtom } from "@/providers/JellyfinProvider";
|
|
|
|
export const useRefreshMetadata = (item: BaseItemDto) => {
|
|
const queryClient = useQueryClient();
|
|
const [api] = useAtom(apiAtom);
|
|
const { t } = useTranslation();
|
|
const type = "item";
|
|
|
|
const refreshMetadataMutation = useMutation({
|
|
mutationFn: async () => {
|
|
if (api && item.Id) {
|
|
await getItemRefreshApi(api).refreshItem({
|
|
itemId: item.Id,
|
|
});
|
|
}
|
|
},
|
|
onSuccess: () => {
|
|
toast.success(t("metadata.refresh_triggered"));
|
|
queryClient.invalidateQueries({ queryKey: [type, item.Id] });
|
|
},
|
|
onError: (error) => {
|
|
console.error("Failed to refresh metadata:", error);
|
|
toast.error(t("metadata.refresh_failed"));
|
|
},
|
|
});
|
|
|
|
const refreshMetadata = () => {
|
|
refreshMetadataMutation.mutate();
|
|
};
|
|
|
|
return {
|
|
refreshMetadata,
|
|
isRefreshing: refreshMetadataMutation.isPending,
|
|
refreshMetadataMutation,
|
|
};
|
|
};
|