Files
streamyfin/hooks/useRefreshMetadata.ts
2025-11-08 12:37:34 +01:00

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,
};
};