wcz-layout
Version:
100 lines (99 loc) • 3.17 kB
JavaScript
import { t as queryClient } from "./queryClient-1OJ5Va3i.js";
import { a as batchDeleteFiles, c as getFile, d as updateFileMeta, f as uploadFile, l as getFileMetas, o as deleteFile, s as downloadFile, u as getFileThumbnail } from "./file-BHdm6ob1.js";
import { mutationOptions, queryOptions } from "@tanstack/react-query";
import saveAs from "file-saver";
//#region src/queries/client/file.ts
const QUERY_KEY = "file";
const HOUR = 1e3 * 60 * 60;
const baseOptions = {
staleTime: HOUR,
gcTime: HOUR,
refetchOnWindowFocus: false
};
async function responseToObjectUrl(response) {
const blob = await response.blob();
return URL.createObjectURL(blob);
}
const fileMetasQueryOptions = (params) => queryOptions({
queryKey: [
QUERY_KEY,
"meta",
params.appName,
params.subId
],
queryFn: () => getFileMetas({ data: params }),
...baseOptions
});
const fileThumbnailQueryOptions = (params) => queryOptions({
queryKey: [
QUERY_KEY,
"thumbnail",
params.appName,
params.id
],
queryFn: async () => responseToObjectUrl(await getFileThumbnail({ data: params })),
enabled: !!params.id,
...baseOptions
});
const fileQueryOptions = (params) => queryOptions({
queryKey: [
QUERY_KEY,
params.appName,
params.id
],
queryFn: async () => responseToObjectUrl(await getFile({ data: params })),
enabled: !!params.id,
...baseOptions
});
const downloadFileMutationOptions = () => mutationOptions({ mutationFn: async (data) => {
saveAs(await (await downloadFile({ data })).blob(), `${data.fileName}.${data.fileExtension}`);
} });
const openFileMutationOptions = () => mutationOptions({ mutationFn: async (data) => {
const response = await getFile({ data });
window.open(await responseToObjectUrl(response));
} });
const updateFileMetaMutationOptions = () => mutationOptions({
mutationFn: (data) => updateFileMeta({ data }),
onSettled: () => queryClient.invalidateQueries({
queryKey: [QUERY_KEY, "meta"],
exact: false
})
});
const deleteFileMutationOptions = () => mutationOptions({
mutationFn: (data) => deleteFile({ data }),
onSettled: () => queryClient.invalidateQueries({
queryKey: [QUERY_KEY, "meta"],
exact: false
})
});
const batchDeleteFilesMutationOptions = () => mutationOptions({
mutationFn: (data) => batchDeleteFiles({ data }),
onSettled: () => queryClient.invalidateQueries({
queryKey: [QUERY_KEY, "meta"],
exact: false
})
});
const useUploadFile = ({ onSuccess, onError } = {}) => {
const mutate = async (data) => {
if (!data.subId) throw new Error("subId is required for file upload");
try {
const result = await uploadFile({ data });
queryClient.invalidateQueries({
queryKey: [
QUERY_KEY,
"meta",
data.appName,
data.subId
],
exact: false
});
onSuccess?.(result);
} catch (error) {
onError?.(error);
}
};
return { mutate };
};
//#endregion
export { fileQueryOptions as a, updateFileMetaMutationOptions as c, fileMetasQueryOptions as i, useUploadFile as l, deleteFileMutationOptions as n, fileThumbnailQueryOptions as o, downloadFileMutationOptions as r, openFileMutationOptions as s, batchDeleteFilesMutationOptions as t };
//# sourceMappingURL=file-DNF9kxdN.js.map