wcz-layout
Version:
551 lines (550 loc) • 15.4 kB
JavaScript
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