UNPKG

wcz-layout

Version:

551 lines (550 loc) 15.4 kB
import { c as toKebabCase, p as clientEnv, u as getAccessToken } from "./utils-CqQKSaSs.js"; import { t as queryClient } from "./queryClient-CAJR3qjE.js"; import { n as ApprovalStepResult, r as ApprovalStatus, t as FileMetaSchema } from "./FileMeta-D9HyhrGi.js"; import { c } from "react/compiler-runtime"; import { useState } from "react"; import z$1 from "zod"; import axios from "axios"; import { mutationOptions, queryOptions } from "@tanstack/react-query"; import { uuidv7 } from "uuidv7"; import saveAs from "file-saver"; import { Upload } from "tus-js-client"; //#region src/queries/ApprovalQueries.ts const QUERY_KEY$2 = "approval"; const APP_NAME$1 = toKebabCase(clientEnv.VITE_APP_TITLE); const api$2 = axios.create({ baseURL: "https://graph.microsoft.com/v1.0" }); api$2.interceptors.request.use(async (config) => { const accessToken = await getAccessToken("graph"); config.headers.set("Authorization", `Bearer ${accessToken}`); return config; }); z$1.object({ appName: z$1.string().min(1).max(255).default(APP_NAME$1).optional(), status: ApprovalStatus.optional(), approverEmployeeId: z$1.string().min(1).max(20).optional(), stepResult: ApprovalStepResult.optional() }); const approvalQueries = { approvals: (params) => { const queryParams = new URLSearchParams(); queryParams.append("applicationName", params?.appName ?? APP_NAME$1); if (params?.status) queryParams.append("status", params.status.toString()); if (params?.approverEmployeeId) queryParams.append("approverEmployeeId", params.approverEmployeeId); if (params?.stepResult) queryParams.append("stepResult", params.stepResult.toString()); return queryOptions({ queryKey: [QUERY_KEY$2, params], queryFn: ({ signal }) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/Requests?${queryParams.toString()}`, method: "GET", signal }).then((request) => request.data) }); }, approval: (id) => queryOptions({ queryKey: [QUERY_KEY$2, id], queryFn: ({ signal }) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/${id}`, method: "GET", signal }).then((request) => request.data) }), create: () => mutationOptions({ mutationFn: (data) => api$2.request({ url: `/${QUERY_KEY$2}/Requests`, method: "POST", data }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$2], exact: false }) }), approve: () => mutationOptions({ mutationFn: (data) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/${data.id}/single-approval`, method: "POST", data }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$2], exact: false }) }), resubmit: () => mutationOptions({ mutationFn: (data) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/${data.id}/resubmit`, method: "POST", data }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$2], exact: false }) }), withdraw: () => mutationOptions({ mutationFn: (data) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/${data.id}/withdraw`, method: "POST", data }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$2], exact: false }) }), cancel: () => mutationOptions({ mutationFn: (data) => api$2.request({ url: `/${QUERY_KEY$2}/Requests/${data.id}/cancel`, method: "POST", data }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$2], exact: false }) }) }; //#endregion //#region src/queries/FileQueries.ts const QUERY_KEY$1 = "file"; const HOUR = 1e3 * 60 * 60; const APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE); const FILE_API_URL = "later"; const api$1 = axios.create({ baseURL: "https://graph.microsoft.com/v1.0" }); api$1.interceptors.request.use(async (config) => { const accessToken = await getAccessToken("graph"); config.headers.set("Authorization", `Bearer ${accessToken}`); return config; }); z$1.object({ appName: z$1.string().min(1).max(255).default(APP_NAME).optional(), subId: z$1.uuid() }); z$1.object({ appName: z$1.string().min(1).max(255).default(APP_NAME).optional(), meta: FileMetaSchema.nullish() }); z$1.object({ appName: z$1.string().min(1).max(255).default(APP_NAME).optional(), meta: FileMetaSchema.nullish() }); const fileQueries = { metas: (params) => { const queryParams = new URLSearchParams(); queryParams.append("appName", params.appName ?? APP_NAME); queryParams.append("subId", params.subId); return queryOptions({ queryKey: [ QUERY_KEY$1, "meta", params.appName ?? APP_NAME, params.subId ], queryFn: ({ signal }) => api$1.request({ url: `/${QUERY_KEY$1}/v1/meta?${queryParams.toString()}`, method: "GET", signal }).then((request) => request.data), staleTime: HOUR, gcTime: HOUR, refetchOnWindowFocus: false }); }, thumbnail: (params) => { const queryParams = new URLSearchParams(); queryParams.append("appName", params.appName ?? APP_NAME); queryParams.append("id", params.meta?.id ?? ""); return queryOptions({ queryKey: [ QUERY_KEY$1, "thumbnail", params.appName ?? APP_NAME, params.meta?.id ], queryFn: ({ signal }) => api$1.request({ url: `/${QUERY_KEY$1}/v1/thumbnail?${queryParams.toString()}`, method: "GET", signal, responseType: "blob" }).then((request) => request.data), select: (data) => URL.createObjectURL(data), staleTime: HOUR, gcTime: HOUR, refetchOnWindowFocus: false }); }, getOne: (params) => { const queryParams = new URLSearchParams(); queryParams.append("appName", params.appName ?? APP_NAME); queryParams.append("id", params.meta?.id ?? ""); return queryOptions({ queryKey: [ QUERY_KEY$1, params.appName ?? APP_NAME, params.meta?.id ], queryFn: ({ signal }) => api$1.request({ url: `/${QUERY_KEY$1}/v1?${queryParams.toString()}`, method: "GET", signal, responseType: "blob" }).then((request) => request.data), select: (data) => URL.createObjectURL(data), staleTime: HOUR, gcTime: HOUR, refetchOnWindowFocus: false }); }, download: () => mutationOptions({ mutationFn: (meta) => api$1.request({ url: `/${QUERY_KEY$1}/v1/download?appName=${APP_NAME}&id=${meta.id}`, method: "GET", responseType: "blob" }).then((request) => request.data), onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`) }), open: () => mutationOptions({ mutationFn: (meta) => api$1.request({ url: `/${QUERY_KEY$1}/v1?appName=${APP_NAME}&id=${meta.id}`, method: "GET", responseType: "blob" }).then((request) => request.data), onSuccess: (data) => { window.open(URL.createObjectURL(data)); } }), updateMeta: () => mutationOptions({ mutationFn: (meta) => api$1.request({ url: `/${QUERY_KEY$1}/v1/meta?appName=${APP_NAME}&id=${meta.id}`, method: "PUT", data: meta }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$1, "meta"], exact: false }) }), delete: () => mutationOptions({ mutationFn: (meta) => api$1.request({ url: `/${QUERY_KEY$1}/v1?appName=${APP_NAME}&id=${meta.id}`, method: "DELETE" }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$1, "meta"], exact: false }) }), batchDelete: () => mutationOptions({ mutationFn: (subId) => api$1.request({ url: `/${QUERY_KEY$1}/v1?appName=${APP_NAME}&subId=${subId}`, method: "DELETE" }).then((request) => request.data), onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY$1, "meta"], exact: false }) }) }; const useUploadFile = (t0) => { const $ = c(8); if ($[0] !== "6bb7ad390fe3212557f406ce73d2eca570acbf23f5ca466d77712629cd8702be") { for (let $i = 0; $i < 8; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel"); $[0] = "6bb7ad390fe3212557f406ce73d2eca570acbf23f5ca466d77712629cd8702be"; } const { subId, onSuccess, onError } = t0; const [progress, setProgress] = useState(0); let t1; if ($[1] !== onError || $[2] !== onSuccess || $[3] !== subId) { t1 = async (file) => { if (!subId) throw new Error("subId is required for file upload"); const metadata = { id: uuidv7(), appName: APP_NAME, subId, fileName: file.name }; const accessToken = await getAccessToken("graph"); const upload = new Upload(file, { endpoint: `${FILE_API_URL}/${QUERY_KEY$1}/v1/upload`, chunkSize: 1048576, metadata: { id: metadata.id, appName: metadata.appName, subId: metadata.subId, fileName: metadata.fileName, fileExtension: file.type }, headers: { Authorization: `Bearer ${accessToken}` }, onError: (error) => { setProgress(0); onError?.(error); }, onProgress: (bytesUploaded, bytesTotal) => { setProgress(bytesUploaded / bytesTotal * 100); }, onSuccess: () => { setProgress(0); queryClient.invalidateQueries({ queryKey: [ QUERY_KEY$1, "meta", subId ], exact: false }); onSuccess?.(metadata); } }); const previousUploads = await upload.findPreviousUploads(); if (previousUploads.length > 0) upload.resumeFromPreviousUpload(previousUploads[0]); upload.start(); }; $[1] = onError; $[2] = onSuccess; $[3] = subId; $[4] = t1; } else t1 = $[4]; const mutate = t1; let t2; if ($[5] !== mutate || $[6] !== progress) { t2 = { mutate, progress }; $[5] = mutate; $[6] = progress; $[7] = t2; } else t2 = $[7]; return t2; }; //#endregion //#region src/queries/PeopleSoftQueries.ts const QUERY_KEY = "ps"; const DAY = 1e3 * 60 * 60 * 24; const api = axios.create({ baseURL: "https://graph.microsoft.com/v1.0" }); api.interceptors.request.use(async (config) => { const accessToken = await getAccessToken("graph"); config.headers.set("Authorization", `Bearer ${accessToken}`); return config; }); //#endregion //#region src/queries/index.ts const query = { peopleSoft: { employeesSearch: (searchTerm) => queryOptions({ queryKey: [ QUERY_KEY, "employee", "search", searchTerm ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee?search=${searchTerm}`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employees: () => queryOptions({ queryKey: [QUERY_KEY, "employee"], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/all`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), activeEmployees: () => queryOptions({ queryKey: [ QUERY_KEY, "employee", "active" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/active`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employeeById: (employeeId) => queryOptions({ queryKey: [ QUERY_KEY, "employee", employeeId ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/${employeeId}`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), previousEmployeeIds: () => queryOptions({ queryKey: [ QUERY_KEY, "employee", "previousIds" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/previousIds`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employeeSupervisor: (employeeId) => queryOptions({ queryKey: [ QUERY_KEY, "employee", employeeId, "supervisor" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/${employeeId}/supervisor`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employeeSubordinates: (employeeId) => queryOptions({ queryKey: [ QUERY_KEY, "employee", employeeId, "subordinates" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/${employeeId}/subordinates`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employeeManager: (employeeId) => queryOptions({ queryKey: [ QUERY_KEY, "employee", employeeId, "manager" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/${employeeId}/manager`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), employeeGeneralManager: (employeeId) => queryOptions({ queryKey: [ QUERY_KEY, "employee", employeeId, "generalManager" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/employee/${employeeId}/generalManager`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), departments: () => queryOptions({ queryKey: [QUERY_KEY, "department"], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/department/all`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), departmentById: (departmentId) => queryOptions({ queryKey: [ QUERY_KEY, "department", departmentId ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/department/${departmentId}`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), departmentManager: (departmentId) => queryOptions({ queryKey: [ QUERY_KEY, "department", departmentId, "manager" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/department/${departmentId}/manager`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), departmentEmployees: (departmentId) => queryOptions({ queryKey: [ QUERY_KEY, "department", departmentId, "employees" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/department/${departmentId}/employees`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }), companyGeneralManager: (companyCode) => queryOptions({ queryKey: [ QUERY_KEY, "company", companyCode, "generalManager" ], queryFn: ({ signal }) => api.request({ url: `/${QUERY_KEY}/v1/company/${companyCode}/generalManager`, method: "GET", signal }).then((request) => request.data), staleTime: DAY, gcTime: DAY, refetchOnWindowFocus: false }) }, approval: approvalQueries, file: fileQueries }; //#endregion export { useUploadFile as n, query as t }; //# sourceMappingURL=queries-JPqCc5Tb.js.map