UNPKG

wcz-layout

Version:

1 lines 7.67 kB
{"version":3,"file":"file-b_Ff1MXY.mjs","names":["mutationOptions","queryOptions","z","QueryClientParam","batchDeleteFiles","deleteFile","downloadFile","getFile","getFileMetas","getFileThumbnail","updateFileMeta","uploadFile","FileSchema","GetFileMetasSchema","UpdateFileMetaSchema","UploadFileMetaSchema","QUERY_KEY","HOUR","baseOptions","staleTime","gcTime","refetchOnWindowFocus","streamToObjectUrl","stream","ReadableStream","Promise","blob","Response","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","queryClient","onSettled","invalidateQueries","exact","deleteFileMutationOptions","batchDeleteFilesMutationOptions","uploadFileMutationOptions","file","formData","FormData","append","onSuccess","result"],"sources":["../src/data/client/file.ts"],"sourcesContent":["import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\r\nimport type { z } from \"zod\";\r\nimport type { QueryClientParam } from \"~/models/QueryClientParam\";\r\nimport {\r\n batchDeleteFiles,\r\n deleteFile,\r\n downloadFile,\r\n getFile,\r\n getFileMetas,\r\n getFileThumbnail,\r\n updateFileMeta,\r\n uploadFile,\r\n} from \"~/data/server/file\";\r\nimport type {\r\n FileSchema,\r\n GetFileMetasSchema,\r\n UpdateFileMetaSchema,\r\n UploadFileMetaSchema,\r\n} from \"~/data/server/file\";\r\n\r\nconst QUERY_KEY = \"file\";\r\nconst HOUR = 1000 * 60 * 60;\r\n\r\nconst baseOptions = {\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n};\r\n\r\nasync function streamToObjectUrl(stream: ReadableStream): Promise<string> {\r\n const blob = await new Response(stream).blob();\r\n return URL.createObjectURL(blob);\r\n}\r\n\r\nfunction saveBlob(blob: Blob, fileName: string): void {\r\n const url = URL.createObjectURL(blob);\r\n const anchor = document.createElement(\"a\");\r\n anchor.href = url;\r\n anchor.download = fileName;\r\n anchor.click();\r\n URL.revokeObjectURL(url);\r\n}\r\n\r\nexport const fileMetasQueryOptions = (params: z.input<typeof GetFileMetasSchema>) =>\r\n queryOptions({\r\n queryKey: [QUERY_KEY, \"meta\", params.appName, params.subId],\r\n queryFn: () => getFileMetas({ data: params }),\r\n ...baseOptions,\r\n });\r\n\r\nexport const fileThumbnailQueryOptions = (params: z.input<typeof FileSchema>) =>\r\n queryOptions({\r\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName, params.id],\r\n queryFn: async () => streamToObjectUrl(await getFileThumbnail({ data: params })),\r\n enabled: !!params.id,\r\n ...baseOptions,\r\n });\r\n\r\nexport const fileQueryOptions = (params: z.input<typeof FileSchema>) =>\r\n queryOptions({\r\n queryKey: [QUERY_KEY, params.appName, params.id],\r\n queryFn: async () => streamToObjectUrl(await getFile({ data: params })),\r\n enabled: !!params.id,\r\n ...baseOptions,\r\n });\r\n\r\nexport const downloadFileMutationOptions = () =>\r\n mutationOptions({\r\n mutationFn: async (\r\n data: z.input<typeof FileSchema> & { fileName: string; fileExtension: string },\r\n ) => {\r\n const stream = await downloadFile({ data });\r\n saveBlob(await new Response(stream).blob(), `${data.fileName}.${data.fileExtension}`);\r\n },\r\n });\r\n\r\nexport const openFileMutationOptions = () =>\r\n mutationOptions<void, Error, z.input<typeof FileSchema>>({\r\n mutationFn: async (data) => {\r\n const stream = await getFile({ data });\r\n window.open(await streamToObjectUrl(stream));\r\n },\r\n });\r\n\r\nexport const updateFileMetaMutationOptions = ({ queryClient }: QueryClientParam) =>\r\n mutationOptions({\r\n mutationFn: (data: z.input<typeof UpdateFileMetaSchema>) => updateFileMeta({ data }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n\r\nexport const deleteFileMutationOptions = ({ queryClient }: QueryClientParam) =>\r\n mutationOptions({\r\n mutationFn: (data: z.input<typeof FileSchema>) => deleteFile({ data }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n\r\nexport const batchDeleteFilesMutationOptions = ({ queryClient }: QueryClientParam) =>\r\n mutationOptions({\r\n mutationFn: (data: z.input<typeof GetFileMetasSchema>) => batchDeleteFiles({ data }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n\r\nexport const uploadFileMutationOptions = ({ queryClient }: QueryClientParam) =>\r\n mutationOptions({\r\n mutationFn: ({ appName, subId, file }: z.input<typeof UploadFileMetaSchema>) => {\r\n const formData = new FormData();\r\n formData.append(\"appName\", appName);\r\n formData.append(\"subId\", subId);\r\n formData.append(\"file\", file);\r\n return uploadFile({ data: formData });\r\n },\r\n onSuccess: (result) =>\r\n queryClient.invalidateQueries({\r\n queryKey: [QUERY_KEY, \"meta\", result.appName, result.subId],\r\n exact: false,\r\n }),\r\n });\r\n"],"mappings":"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"}