UNPKG

wcz-layout

Version:

104 lines (103 loc) 3.39 kB
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-bAh5yYg7.mjs"; import { mutationOptions, queryOptions } from "@tanstack/react-query"; //#region src/data/client/file.ts const QUERY_KEY = "file"; const HOUR = 1e3 * 60 * 60; const baseOptions = { staleTime: HOUR, gcTime: HOUR, refetchOnWindowFocus: false }; async function streamToObjectUrl(stream) { const blob = await new Response(stream).blob(); return URL.createObjectURL(blob); } function saveBlob(blob, fileName) { const url = URL.createObjectURL(blob); const anchor = document.createElement("a"); anchor.href = url; anchor.download = fileName; anchor.click(); URL.revokeObjectURL(url); } 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 () => streamToObjectUrl(await getFileThumbnail({ data: params })), enabled: !!params.id, ...baseOptions }); const fileQueryOptions = (params) => queryOptions({ queryKey: [ QUERY_KEY, params.appName, params.id ], queryFn: async () => streamToObjectUrl(await getFile({ data: params })), enabled: !!params.id, ...baseOptions }); const downloadFileMutationOptions = () => mutationOptions({ mutationFn: async (data) => { const stream = await downloadFile({ data }); saveBlob(await new Response(stream).blob(), `${data.fileName}.${data.fileExtension}`); } }); const openFileMutationOptions = () => mutationOptions({ mutationFn: async (data) => { const stream = await getFile({ data }); window.open(await streamToObjectUrl(stream)); } }); const updateFileMetaMutationOptions = ({ queryClient }) => mutationOptions({ mutationFn: (data) => updateFileMeta({ data }), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false }) }); const deleteFileMutationOptions = ({ queryClient }) => mutationOptions({ mutationFn: (data) => deleteFile({ data }), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false }) }); const batchDeleteFilesMutationOptions = ({ queryClient }) => mutationOptions({ mutationFn: (data) => batchDeleteFiles({ data }), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false }) }); const uploadFileMutationOptions = ({ queryClient }) => mutationOptions({ mutationFn: ({ appName, subId, file }) => { const formData = new FormData(); formData.append("appName", appName); formData.append("subId", subId); formData.append("file", file); return uploadFile({ data: formData }); }, onSuccess: (result) => queryClient.invalidateQueries({ queryKey: [ QUERY_KEY, "meta", result.appName, result.subId ], exact: false }) }); //#endregion export { fileQueryOptions as a, updateFileMetaMutationOptions as c, fileMetasQueryOptions as i, uploadFileMutationOptions as l, deleteFileMutationOptions as n, fileThumbnailQueryOptions as o, downloadFileMutationOptions as r, openFileMutationOptions as s, batchDeleteFilesMutationOptions as t }; //# sourceMappingURL=file-b_Ff1MXY.mjs.map