UNPKG

wcz-layout

Version:

1 lines 7.33 kB
{"version":3,"file":"file-d3KXwzPE.mjs","names":["mutationOptions","queryOptions","z","queryClient","batchDeleteFiles","deleteFile","downloadFile","getFile","getFileMetas","getFileThumbnail","updateFileMeta","uploadFile","FileSchema","GetFileMetasSchema","UpdateFileMetaSchema","UploadFileMetaSchema","QUERY_KEY","HOUR","baseOptions","staleTime","gcTime","refetchOnWindowFocus","responseToObjectUrl","response","Response","Promise","blob","URL","createObjectURL","saveBlob","Blob","fileName","url","anchor","document","createElement","href","download","click","revokeObjectURL","fileMetasQueryOptions","params","input","queryKey","appName","subId","queryFn","data","fileThumbnailQueryOptions","id","enabled","fileQueryOptions","downloadFileMutationOptions","mutationFn","fileExtension","openFileMutationOptions","Error","window","open","updateFileMetaMutationOptions","onSettled","invalidateQueries","exact","deleteFileMutationOptions","batchDeleteFilesMutationOptions","UseUploadFileProps","onSuccess","result","Awaited","ReturnType","onError","error","useUploadFile","mutate"],"sources":["../src/data/client/file.ts"],"sourcesContent":["import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\nimport type { z } from \"zod\";\nimport { queryClient } from \"~/lib/queryClient\";\nimport {\n batchDeleteFiles,\n deleteFile,\n downloadFile,\n getFile,\n getFileMetas,\n getFileThumbnail,\n updateFileMeta,\n uploadFile,\n} from \"~/data/server/file\";\nimport type {\n FileSchema,\n GetFileMetasSchema,\n UpdateFileMetaSchema,\n UploadFileMetaSchema,\n} from \"~/data/server/file\";\n\nconst QUERY_KEY = \"file\";\nconst HOUR = 1000 * 60 * 60;\n\nconst baseOptions = {\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n};\n\nasync function responseToObjectUrl(response: Response): Promise<string> {\n const blob = await response.blob();\n return URL.createObjectURL(blob);\n}\n\nfunction saveBlob(blob: Blob, fileName: string): void {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = fileName;\n anchor.click();\n URL.revokeObjectURL(url);\n}\n\nexport const fileMetasQueryOptions = (params: z.input<typeof GetFileMetasSchema>) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"meta\", params.appName, params.subId],\n queryFn: () => getFileMetas({ data: params }),\n ...baseOptions,\n });\n\nexport const fileThumbnailQueryOptions = (params: z.input<typeof FileSchema>) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName, params.id],\n queryFn: async () => responseToObjectUrl(await getFileThumbnail({ data: params })),\n enabled: !!params.id,\n ...baseOptions,\n });\n\nexport const fileQueryOptions = (params: z.input<typeof FileSchema>) =>\n queryOptions({\n queryKey: [QUERY_KEY, params.appName, params.id],\n queryFn: async () => responseToObjectUrl(await getFile({ data: params })),\n enabled: !!params.id,\n ...baseOptions,\n });\n\nexport const downloadFileMutationOptions = () =>\n mutationOptions({\n mutationFn: async (\n data: z.input<typeof FileSchema> & { fileName: string; fileExtension: string },\n ) => {\n const response = await downloadFile({ data });\n saveBlob(await response.blob(), `${data.fileName}.${data.fileExtension}`);\n },\n });\n\nexport const openFileMutationOptions = () =>\n mutationOptions<void, Error, z.input<typeof FileSchema>>({\n mutationFn: async (data) => {\n const response = await getFile({ data });\n window.open(await responseToObjectUrl(response));\n },\n });\n\nexport const updateFileMetaMutationOptions = () =>\n mutationOptions({\n mutationFn: (data: z.input<typeof UpdateFileMetaSchema>) => updateFileMeta({ data }),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n });\n\nexport const deleteFileMutationOptions = () =>\n mutationOptions({\n mutationFn: (data: z.input<typeof FileSchema>) => deleteFile({ data }),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n });\n\nexport const batchDeleteFilesMutationOptions = () =>\n mutationOptions({\n mutationFn: (data: z.input<typeof GetFileMetasSchema>) => batchDeleteFiles({ data }),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n });\n\ninterface UseUploadFileProps {\n onSuccess?: (result: Awaited<ReturnType<typeof uploadFile>>) => void;\n onError?: (error: Error) => void;\n}\n\nexport const useUploadFile = ({ onSuccess, onError }: UseUploadFileProps = {}) => {\n const mutate = async (data: z.input<typeof UploadFileMetaSchema>) => {\n if (!data.subId) throw new Error(\"subId is required for file upload\");\n\n try {\n const result = await uploadFile({ data });\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEY, \"meta\", data.appName, data.subId],\n exact: false,\n });\n onSuccess?.(result);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n return { mutate };\n};\n"],"mappings":"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"}