UNPKG

wcz-layout

Version:

100 lines (99 loc) 3.17 kB
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