@sekolaos/shared-api 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2FTS6JMO.cjs +66 -0
- package/dist/chunk-2FTS6JMO.cjs.map +1 -0
- package/dist/chunk-3RS57C3E.cjs +90 -0
- package/dist/chunk-3RS57C3E.cjs.map +1 -0
- package/dist/chunk-4ECXVAIQ.cjs +50 -0
- package/dist/chunk-4ECXVAIQ.cjs.map +1 -0
- package/dist/chunk-4T52ABA5.js +63 -0
- package/dist/chunk-4T52ABA5.js.map +1 -0
- package/dist/chunk-6JGO2CUT.js +52 -0
- package/dist/chunk-6JGO2CUT.js.map +1 -0
- package/dist/chunk-6UCHRWSL.js +43 -0
- package/dist/chunk-6UCHRWSL.js.map +1 -0
- package/dist/chunk-AGNLUQKT.cjs +52 -0
- package/dist/chunk-AGNLUQKT.cjs.map +1 -0
- package/dist/chunk-AGPMQFZM.js +3 -0
- package/dist/chunk-AGPMQFZM.js.map +1 -0
- package/dist/chunk-ALMSFTRM.js +66 -0
- package/dist/chunk-ALMSFTRM.js.map +1 -0
- package/dist/chunk-AOBHBJ2G.cjs +89 -0
- package/dist/chunk-AOBHBJ2G.cjs.map +1 -0
- package/dist/chunk-BOASJ3VG.cjs +31 -0
- package/dist/chunk-BOASJ3VG.cjs.map +1 -0
- package/dist/chunk-CBTITLRR.js +43 -0
- package/dist/chunk-CBTITLRR.js.map +1 -0
- package/dist/chunk-CP46K2UB.cjs +74 -0
- package/dist/chunk-CP46K2UB.cjs.map +1 -0
- package/dist/chunk-DMEWJ56D.js +76 -0
- package/dist/chunk-DMEWJ56D.js.map +1 -0
- package/dist/chunk-DNNK2DMM.cjs +119 -0
- package/dist/chunk-DNNK2DMM.cjs.map +1 -0
- package/dist/chunk-GKKJMRCL.js +75 -0
- package/dist/chunk-GKKJMRCL.js.map +1 -0
- package/dist/chunk-GRBBLS5Y.js +77 -0
- package/dist/chunk-GRBBLS5Y.js.map +1 -0
- package/dist/chunk-GRXFSXG5.js +124 -0
- package/dist/chunk-GRXFSXG5.js.map +1 -0
- package/dist/chunk-GUJVCKEN.js +102 -0
- package/dist/chunk-GUJVCKEN.js.map +1 -0
- package/dist/chunk-LA7MRXWR.js +77 -0
- package/dist/chunk-LA7MRXWR.js.map +1 -0
- package/dist/chunk-MRFGUSN2.js +20 -0
- package/dist/chunk-MRFGUSN2.js.map +1 -0
- package/dist/chunk-NBVPN4KL.cjs +23 -0
- package/dist/chunk-NBVPN4KL.cjs.map +1 -0
- package/dist/chunk-NGFFI4XQ.cjs +61 -0
- package/dist/chunk-NGFFI4XQ.cjs.map +1 -0
- package/dist/chunk-OKSRSOYJ.cjs +88 -0
- package/dist/chunk-OKSRSOYJ.cjs.map +1 -0
- package/dist/chunk-PPK3HQOY.cjs +134 -0
- package/dist/chunk-PPK3HQOY.cjs.map +1 -0
- package/dist/chunk-QJSOSQ7M.cjs +23 -0
- package/dist/chunk-QJSOSQ7M.cjs.map +1 -0
- package/dist/chunk-R37QQTQS.cjs +64 -0
- package/dist/chunk-R37QQTQS.cjs.map +1 -0
- package/dist/chunk-R7ACSDOA.cjs +114 -0
- package/dist/chunk-R7ACSDOA.cjs.map +1 -0
- package/dist/chunk-S6QFHKCE.js +99 -0
- package/dist/chunk-S6QFHKCE.js.map +1 -0
- package/dist/chunk-TSLEYQKD.cjs +92 -0
- package/dist/chunk-TSLEYQKD.cjs.map +1 -0
- package/dist/chunk-WF63F6RJ.cjs +4 -0
- package/dist/chunk-WF63F6RJ.cjs.map +1 -0
- package/dist/chunk-XU5UEIBL.js +43 -0
- package/dist/chunk-XU5UEIBL.js.map +1 -0
- package/dist/chunk-XVG5Z6B5.cjs +79 -0
- package/dist/chunk-XVG5Z6B5.cjs.map +1 -0
- package/dist/chunk-YA2KONBB.js +20 -0
- package/dist/chunk-YA2KONBB.js.map +1 -0
- package/dist/chunk-YK7QFPBF.js +55 -0
- package/dist/chunk-YK7QFPBF.js.map +1 -0
- package/dist/chunk-YTF4Z7I4.js +26 -0
- package/dist/chunk-YTF4Z7I4.js.map +1 -0
- package/dist/client/index.cjs +62 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +28 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/index.cjs +620 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +39 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/keys/index.cjs +56 -0
- package/dist/keys/index.cjs.map +1 -0
- package/dist/keys/index.d.cts +64 -0
- package/dist/keys/index.d.ts +64 -0
- package/dist/keys/index.js +3 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/modules/academic/index.cjs +44 -0
- package/dist/modules/academic/index.cjs.map +1 -0
- package/dist/modules/academic/index.d.cts +54 -0
- package/dist/modules/academic/index.d.ts +54 -0
- package/dist/modules/academic/index.js +7 -0
- package/dist/modules/academic/index.js.map +1 -0
- package/dist/modules/attendance/index.cjs +68 -0
- package/dist/modules/attendance/index.cjs.map +1 -0
- package/dist/modules/attendance/index.d.cts +135 -0
- package/dist/modules/attendance/index.d.ts +135 -0
- package/dist/modules/attendance/index.js +7 -0
- package/dist/modules/attendance/index.js.map +1 -0
- package/dist/modules/auth/index.cjs +52 -0
- package/dist/modules/auth/index.cjs.map +1 -0
- package/dist/modules/auth/index.d.cts +44 -0
- package/dist/modules/auth/index.d.ts +44 -0
- package/dist/modules/auth/index.js +7 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/classroom/index.cjs +60 -0
- package/dist/modules/classroom/index.cjs.map +1 -0
- package/dist/modules/classroom/index.d.cts +84 -0
- package/dist/modules/classroom/index.d.ts +84 -0
- package/dist/modules/classroom/index.js +7 -0
- package/dist/modules/classroom/index.js.map +1 -0
- package/dist/modules/lead/index.cjs +44 -0
- package/dist/modules/lead/index.cjs.map +1 -0
- package/dist/modules/lead/index.d.cts +104 -0
- package/dist/modules/lead/index.d.ts +104 -0
- package/dist/modules/lead/index.js +7 -0
- package/dist/modules/lead/index.js.map +1 -0
- package/dist/modules/student/index.cjs +76 -0
- package/dist/modules/student/index.cjs.map +1 -0
- package/dist/modules/student/index.d.cts +125 -0
- package/dist/modules/student/index.d.ts +125 -0
- package/dist/modules/student/index.js +7 -0
- package/dist/modules/student/index.js.map +1 -0
- package/dist/modules/subject/index.cjs +36 -0
- package/dist/modules/subject/index.cjs.map +1 -0
- package/dist/modules/subject/index.d.cts +40 -0
- package/dist/modules/subject/index.d.ts +40 -0
- package/dist/modules/subject/index.js +7 -0
- package/dist/modules/subject/index.js.map +1 -0
- package/dist/modules/system/index.cjs +20 -0
- package/dist/modules/system/index.cjs.map +1 -0
- package/dist/modules/system/index.d.cts +14 -0
- package/dist/modules/system/index.d.ts +14 -0
- package/dist/modules/system/index.js +7 -0
- package/dist/modules/system/index.js.map +1 -0
- package/dist/modules/teaching-schedule/index.cjs +60 -0
- package/dist/modules/teaching-schedule/index.cjs.map +1 -0
- package/dist/modules/teaching-schedule/index.d.cts +97 -0
- package/dist/modules/teaching-schedule/index.d.ts +97 -0
- package/dist/modules/teaching-schedule/index.js +7 -0
- package/dist/modules/teaching-schedule/index.js.map +1 -0
- package/dist/modules/tenant/index.cjs +68 -0
- package/dist/modules/tenant/index.cjs.map +1 -0
- package/dist/modules/tenant/index.d.cts +113 -0
- package/dist/modules/tenant/index.d.ts +113 -0
- package/dist/modules/tenant/index.js +7 -0
- package/dist/modules/tenant/index.js.map +1 -0
- package/dist/modules/upload/index.cjs +27 -0
- package/dist/modules/upload/index.cjs.map +1 -0
- package/dist/modules/upload/index.d.cts +18 -0
- package/dist/modules/upload/index.d.ts +18 -0
- package/dist/modules/upload/index.js +6 -0
- package/dist/modules/upload/index.js.map +1 -0
- package/dist/modules/user/index.cjs +60 -0
- package/dist/modules/user/index.cjs.map +1 -0
- package/dist/modules/user/index.d.cts +117 -0
- package/dist/modules/user/index.d.ts +117 -0
- package/dist/modules/user/index.js +7 -0
- package/dist/modules/user/index.js.map +1 -0
- package/dist/provider.cjs +17 -0
- package/dist/provider.cjs.map +1 -0
- package/dist/provider.d.cts +15 -0
- package/dist/provider.d.ts +15 -0
- package/dist/provider.js +4 -0
- package/dist/provider.js.map +1 -0
- package/dist/types-BxV0BtVp.d.cts +89 -0
- package/dist/types-BxV0BtVp.d.ts +89 -0
- package/package.json +137 -4
- package/README.md +0 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
|
+
|
|
8
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.users;
|
|
9
|
+
async function listRoles() {
|
|
10
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/roles`);
|
|
11
|
+
}
|
|
12
|
+
async function listTeachers(params) {
|
|
13
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/teachers`, { params });
|
|
14
|
+
}
|
|
15
|
+
async function getTeacher(id) {
|
|
16
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/teachers/${id}`);
|
|
17
|
+
}
|
|
18
|
+
async function createTeacher(payload) {
|
|
19
|
+
return chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/teachers`, payload);
|
|
20
|
+
}
|
|
21
|
+
async function updateTeacher(id, payload) {
|
|
22
|
+
return chunkNGFFI4XQ_cjs.putData(`${ENDPOINT}/teachers/${id}`, payload);
|
|
23
|
+
}
|
|
24
|
+
async function assignUserRoles(payload) {
|
|
25
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
26
|
+
`${ENDPOINT}/teachers/assign-roles`,
|
|
27
|
+
payload
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
function useRoles() {
|
|
31
|
+
return reactQuery.useQuery({ queryKey: chunkXVG5Z6B5_cjs.userKeys.roles(), queryFn: listRoles, staleTime: 5 * 6e4 });
|
|
32
|
+
}
|
|
33
|
+
function useTeachers(params) {
|
|
34
|
+
return reactQuery.useQuery({
|
|
35
|
+
queryKey: chunkXVG5Z6B5_cjs.userKeys.teachers(params),
|
|
36
|
+
queryFn: () => listTeachers(params)
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function useTeacher(id, options) {
|
|
40
|
+
return reactQuery.useQuery({
|
|
41
|
+
queryKey: chunkXVG5Z6B5_cjs.userKeys.teacherDetail(id),
|
|
42
|
+
queryFn: () => getTeacher(id),
|
|
43
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function useCreateTeacher() {
|
|
47
|
+
const queryClient = reactQuery.useQueryClient();
|
|
48
|
+
return reactQuery.useMutation({
|
|
49
|
+
mutationFn: createTeacher,
|
|
50
|
+
onSuccess: async () => {
|
|
51
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.userKeys.all });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function useUpdateTeacher() {
|
|
56
|
+
const queryClient = reactQuery.useQueryClient();
|
|
57
|
+
return reactQuery.useMutation({
|
|
58
|
+
mutationFn: ({ id, payload }) => updateTeacher(id, payload),
|
|
59
|
+
onSuccess: async (_data, variables) => {
|
|
60
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.userKeys.teacherDetail(variables.id) });
|
|
61
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.userKeys.all });
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function useAssignUserRoles() {
|
|
66
|
+
const queryClient = reactQuery.useQueryClient();
|
|
67
|
+
return reactQuery.useMutation({
|
|
68
|
+
mutationFn: assignUserRoles,
|
|
69
|
+
onSuccess: async () => {
|
|
70
|
+
await queryClient.invalidateQueries();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
exports.assignUserRoles = assignUserRoles;
|
|
76
|
+
exports.createTeacher = createTeacher;
|
|
77
|
+
exports.getTeacher = getTeacher;
|
|
78
|
+
exports.listRoles = listRoles;
|
|
79
|
+
exports.listTeachers = listTeachers;
|
|
80
|
+
exports.updateTeacher = updateTeacher;
|
|
81
|
+
exports.useAssignUserRoles = useAssignUserRoles;
|
|
82
|
+
exports.useCreateTeacher = useCreateTeacher;
|
|
83
|
+
exports.useRoles = useRoles;
|
|
84
|
+
exports.useTeacher = useTeacher;
|
|
85
|
+
exports.useTeachers = useTeachers;
|
|
86
|
+
exports.useUpdateTeacher = useUpdateTeacher;
|
|
87
|
+
//# sourceMappingURL=chunk-OKSRSOYJ.cjs.map
|
|
88
|
+
//# sourceMappingURL=chunk-OKSRSOYJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/user/user.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","userKeys","useQueryClient","useMutation"],"mappings":"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","file":"chunk-OKSRSOYJ.cjs","sourcesContent":["import type {\r\n AssignUserRolesRequest,\r\n CreateTeacherInput,\r\n Role,\r\n TeacherListQuery,\r\n UpdateTeacherInput,\r\n User,\r\n UserProfile,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { userKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.users;\r\n\r\nexport async function listRoles(): Promise<Role[]> {\r\n return getData<Role[]>(`${ENDPOINT}/roles`);\r\n}\r\n\r\nexport async function listTeachers(params?: Partial<TeacherListQuery>): Promise<User[]> {\r\n return getData<User[]>(`${ENDPOINT}/teachers`, { params });\r\n}\r\n\r\nexport async function getTeacher(id: string): Promise<UserProfile> {\r\n return getData<UserProfile>(`${ENDPOINT}/teachers/${id}`);\r\n}\r\n\r\nexport async function createTeacher(payload: CreateTeacherInput): Promise<UserProfile> {\r\n return postData<UserProfile, CreateTeacherInput>(`${ENDPOINT}/teachers`, payload);\r\n}\r\n\r\nexport async function updateTeacher(\r\n id: string,\r\n payload: UpdateTeacherInput\r\n): Promise<UserProfile> {\r\n return putData<UserProfile, UpdateTeacherInput>(`${ENDPOINT}/teachers/${id}`, payload);\r\n}\r\n\r\nexport async function assignUserRoles(payload: AssignUserRolesRequest): Promise<UserProfile> {\r\n return postData<UserProfile, AssignUserRolesRequest>(\r\n `${ENDPOINT}/teachers/assign-roles`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useRoles() {\r\n return useQuery({ queryKey: userKeys.roles(), queryFn: listRoles, staleTime: 5 * 60_000 });\r\n}\r\n\r\nexport function useTeachers(params?: Partial<TeacherListQuery>) {\r\n return useQuery({\r\n queryKey: userKeys.teachers(params as Record<string, unknown> | undefined),\r\n queryFn: () => listTeachers(params),\r\n });\r\n}\r\n\r\nexport function useTeacher(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: userKeys.teacherDetail(id),\r\n queryFn: () => getTeacher(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useCreateTeacher() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createTeacher,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: userKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateTeacher() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateTeacherInput }) =>\r\n updateTeacher(id, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: userKeys.teacherDetail(variables.id) });\r\n await queryClient.invalidateQueries({ queryKey: userKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useAssignUserRoles() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: assignUserRoles,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AssignUserRolesRequest,\r\n CreateTeacherInput,\r\n Role,\r\n TeacherListQuery,\r\n UpdateTeacherInput,\r\n User,\r\n UserProfile,\r\n};\r\n"]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var axios = require('axios');
|
|
4
|
+
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
8
|
+
|
|
9
|
+
// src/client/error.ts
|
|
10
|
+
var DEFAULT_ERROR_MESSAGE = "Terjadi kesalahan sistem";
|
|
11
|
+
var SekolaosApiError = class _SekolaosApiError extends Error {
|
|
12
|
+
constructor(message, statusCode = 500, errors = [], isNetworkError = false, rawError) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.statusCode = statusCode;
|
|
15
|
+
this.errors = errors;
|
|
16
|
+
this.isNetworkError = isNetworkError;
|
|
17
|
+
this.rawError = rawError;
|
|
18
|
+
this.name = "SekolaosApiError";
|
|
19
|
+
Object.setPrototypeOf(this, _SekolaosApiError.prototype);
|
|
20
|
+
}
|
|
21
|
+
statusCode;
|
|
22
|
+
errors;
|
|
23
|
+
isNetworkError;
|
|
24
|
+
rawError;
|
|
25
|
+
/** HTTP 422 validation failure coming from the Zod validation middleware. */
|
|
26
|
+
get isValidationError() {
|
|
27
|
+
return this.statusCode === 422 && this.errors.length > 0;
|
|
28
|
+
}
|
|
29
|
+
get isUnauthorized() {
|
|
30
|
+
return this.statusCode === 401;
|
|
31
|
+
}
|
|
32
|
+
get isForbidden() {
|
|
33
|
+
return this.statusCode === 403;
|
|
34
|
+
}
|
|
35
|
+
get isNotFound() {
|
|
36
|
+
return this.statusCode === 404;
|
|
37
|
+
}
|
|
38
|
+
/** Maps field-level validation errors into a `{ field: message }` record. */
|
|
39
|
+
toFieldErrors() {
|
|
40
|
+
return this.errors.reduce((accumulator, detail) => {
|
|
41
|
+
if (detail.field) {
|
|
42
|
+
accumulator[detail.field] = detail.message;
|
|
43
|
+
}
|
|
44
|
+
return accumulator;
|
|
45
|
+
}, {});
|
|
46
|
+
}
|
|
47
|
+
static fromAxiosError(error) {
|
|
48
|
+
if (!error.response) {
|
|
49
|
+
const isCanceled = error.code === "ERR_CANCELED";
|
|
50
|
+
return new _SekolaosApiError(
|
|
51
|
+
isCanceled ? "Permintaan dibatalkan" : "Koneksi jaringan terputus atau server tidak merespons",
|
|
52
|
+
0,
|
|
53
|
+
[],
|
|
54
|
+
!isCanceled,
|
|
55
|
+
error
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
const { status, data } = error.response;
|
|
59
|
+
return new _SekolaosApiError(
|
|
60
|
+
data?.message || error.message || DEFAULT_ERROR_MESSAGE,
|
|
61
|
+
status,
|
|
62
|
+
data?.errors ?? [],
|
|
63
|
+
false,
|
|
64
|
+
error
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
/** Converts any thrown value into a `SekolaosApiError` instance. */
|
|
68
|
+
static normalize(error) {
|
|
69
|
+
if (error instanceof _SekolaosApiError) {
|
|
70
|
+
return error;
|
|
71
|
+
}
|
|
72
|
+
if (error instanceof axios.AxiosError || error?.isAxiosError) {
|
|
73
|
+
return _SekolaosApiError.fromAxiosError(error);
|
|
74
|
+
}
|
|
75
|
+
if (error instanceof Error) {
|
|
76
|
+
return new _SekolaosApiError(error.message);
|
|
77
|
+
}
|
|
78
|
+
return new _SekolaosApiError(DEFAULT_ERROR_MESSAGE);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
var DEFAULT_BASE_URL = "http://localhost:5000";
|
|
82
|
+
var DEFAULT_TIMEOUT = 3e4;
|
|
83
|
+
var clientConfig = {
|
|
84
|
+
baseURL: DEFAULT_BASE_URL,
|
|
85
|
+
timeout: DEFAULT_TIMEOUT,
|
|
86
|
+
withCredentials: true
|
|
87
|
+
};
|
|
88
|
+
var apiClient = axios__default.default.create({
|
|
89
|
+
baseURL: clientConfig.baseURL,
|
|
90
|
+
timeout: clientConfig.timeout,
|
|
91
|
+
// Sesi HTTP-Only cookie wildcard domain .sekolaos.com
|
|
92
|
+
withCredentials: true,
|
|
93
|
+
headers: {
|
|
94
|
+
"Content-Type": "application/json",
|
|
95
|
+
Accept: "application/json"
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
function configureApiClient(config) {
|
|
99
|
+
clientConfig = { ...clientConfig, ...config };
|
|
100
|
+
if (config.baseURL) apiClient.defaults.baseURL = config.baseURL;
|
|
101
|
+
if (config.timeout) apiClient.defaults.timeout = config.timeout;
|
|
102
|
+
if (typeof config.withCredentials === "boolean") {
|
|
103
|
+
apiClient.defaults.withCredentials = config.withCredentials;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function getApiClientConfig() {
|
|
107
|
+
return clientConfig;
|
|
108
|
+
}
|
|
109
|
+
function setBearerToken(token) {
|
|
110
|
+
clientConfig.bearerToken = token;
|
|
111
|
+
}
|
|
112
|
+
apiClient.interceptors.request.use((config) => {
|
|
113
|
+
if (clientConfig.bearerToken) {
|
|
114
|
+
config.headers.Authorization = `Bearer ${clientConfig.bearerToken}`;
|
|
115
|
+
}
|
|
116
|
+
return config;
|
|
117
|
+
});
|
|
118
|
+
apiClient.interceptors.response.use(
|
|
119
|
+
(response) => response,
|
|
120
|
+
(error) => {
|
|
121
|
+
const apiError = SekolaosApiError.normalize(error);
|
|
122
|
+
if (apiError.statusCode === 401) clientConfig.onUnauthorized?.();
|
|
123
|
+
if (apiError.statusCode === 403) clientConfig.onForbidden?.();
|
|
124
|
+
return Promise.reject(apiError);
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
exports.SekolaosApiError = SekolaosApiError;
|
|
129
|
+
exports.apiClient = apiClient;
|
|
130
|
+
exports.configureApiClient = configureApiClient;
|
|
131
|
+
exports.getApiClientConfig = getApiClientConfig;
|
|
132
|
+
exports.setBearerToken = setBearerToken;
|
|
133
|
+
//# sourceMappingURL=chunk-PPK3HQOY.cjs.map
|
|
134
|
+
//# sourceMappingURL=chunk-PPK3HQOY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client/error.ts","../src/client/axios-instance.ts"],"names":["AxiosError","axios"],"mappings":"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","file":"chunk-PPK3HQOY.cjs","sourcesContent":["import { AxiosError, type AxiosRequestConfig } from \"axios\";\r\nimport { ApiErrorDetail, ApiErrorPayload } from \"./types\";\r\n\r\nconst DEFAULT_ERROR_MESSAGE = \"Terjadi kesalahan sistem\";\r\n\r\nexport class SekolaosApiError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly statusCode: number = 500,\r\n public readonly errors: ApiErrorDetail[] = [],\r\n public readonly isNetworkError: boolean = false,\r\n public readonly rawError?: AxiosError\r\n ) {\r\n super(message);\r\n this.name = \"SekolaosApiError\";\r\n Object.setPrototypeOf(this, SekolaosApiError.prototype);\r\n }\r\n\r\n /** HTTP 422 validation failure coming from the Zod validation middleware. */\r\n public get isValidationError(): boolean {\r\n return this.statusCode === 422 && this.errors.length > 0;\r\n }\r\n\r\n public get isUnauthorized(): boolean {\r\n return this.statusCode === 401;\r\n }\r\n\r\n public get isForbidden(): boolean {\r\n return this.statusCode === 403;\r\n }\r\n\r\n public get isNotFound(): boolean {\r\n return this.statusCode === 404;\r\n }\r\n\r\n /** Maps field-level validation errors into a `{ field: message }` record. */\r\n public toFieldErrors(): Record<string, string> {\r\n return this.errors.reduce<Record<string, string>>((accumulator, detail) => {\r\n if (detail.field) {\r\n accumulator[detail.field] = detail.message;\r\n }\r\n return accumulator;\r\n }, {});\r\n }\r\n\r\n public static fromAxiosError(error: AxiosError<ApiErrorPayload>): SekolaosApiError {\r\n if (!error.response) {\r\n const isCanceled = error.code === \"ERR_CANCELED\";\r\n return new SekolaosApiError(\r\n isCanceled ? \"Permintaan dibatalkan\" : \"Koneksi jaringan terputus atau server tidak merespons\",\r\n 0,\r\n [],\r\n !isCanceled,\r\n error\r\n );\r\n }\r\n\r\n const { status, data } = error.response;\r\n return new SekolaosApiError(\r\n data?.message || error.message || DEFAULT_ERROR_MESSAGE,\r\n status,\r\n data?.errors ?? [],\r\n false,\r\n error\r\n );\r\n }\r\n\r\n /** Converts any thrown value into a `SekolaosApiError` instance. */\r\n public static normalize(error: unknown): SekolaosApiError {\r\n if (error instanceof SekolaosApiError) {\r\n return error;\r\n }\r\n if (error instanceof AxiosError || (error as AxiosError | undefined)?.isAxiosError) {\r\n return SekolaosApiError.fromAxiosError(error as AxiosError<ApiErrorPayload>);\r\n }\r\n if (error instanceof Error) {\r\n return new SekolaosApiError(error.message);\r\n }\r\n return new SekolaosApiError(DEFAULT_ERROR_MESSAGE);\r\n }\r\n}\r\n\r\nexport interface RequestOptions {\r\n /** Extra axios options (headers, signal, params, ...). */\r\n config?: AxiosRequestConfig;\r\n /** Query string parameters serialized by axios. */\r\n params?: AxiosRequestConfig[\"params\"];\r\n /** Abort signal forwarded to axios for TanStack Query cancellation. */\r\n signal?: AbortSignal;\r\n}\r\n","import axios, { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\r\nimport { SekolaosApiError } from \"./error\";\r\nimport { ClientConfig } from \"./types\";\r\n\r\nconst DEFAULT_BASE_URL = \"http://localhost:5000\";\r\nconst DEFAULT_TIMEOUT = 30_000;\r\n\r\nlet clientConfig: ClientConfig = {\r\n baseURL: DEFAULT_BASE_URL,\r\n timeout: DEFAULT_TIMEOUT,\r\n withCredentials: true,\r\n};\r\n\r\nexport const apiClient: AxiosInstance = axios.create({\r\n baseURL: clientConfig.baseURL,\r\n timeout: clientConfig.timeout,\r\n // Sesi HTTP-Only cookie wildcard domain .sekolaos.com\r\n withCredentials: true,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n});\r\n\r\nexport function configureApiClient(config: Partial<ClientConfig>): void {\r\n clientConfig = { ...clientConfig, ...config };\r\n if (config.baseURL) apiClient.defaults.baseURL = config.baseURL;\r\n if (config.timeout) apiClient.defaults.timeout = config.timeout;\r\n if (typeof config.withCredentials === \"boolean\") {\r\n apiClient.defaults.withCredentials = config.withCredentials;\r\n }\r\n}\r\n\r\nexport function getApiClientConfig(): Readonly<ClientConfig> {\r\n return clientConfig;\r\n}\r\n\r\nexport function setBearerToken(token?: string): void {\r\n clientConfig.bearerToken = token;\r\n}\r\n\r\napiClient.interceptors.request.use((config: InternalAxiosRequestConfig) => {\r\n if (clientConfig.bearerToken) {\r\n config.headers.Authorization = `Bearer ${clientConfig.bearerToken}`;\r\n }\r\n return config;\r\n});\r\n\r\napiClient.interceptors.response.use(\r\n (response: AxiosResponse) => response,\r\n (error: unknown) => {\r\n const apiError = SekolaosApiError.normalize(error);\r\n if (apiError.statusCode === 401) clientConfig.onUnauthorized?.();\r\n if (apiError.statusCode === 403) clientConfig.onForbidden?.();\r\n return Promise.reject(apiError);\r\n }\r\n);\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/common/endpoints.ts
|
|
4
|
+
var API_V1_PREFIX = "/api/v1";
|
|
5
|
+
var API_ENDPOINTS = {
|
|
6
|
+
auth: `${API_V1_PREFIX}/auth`,
|
|
7
|
+
tenants: `${API_V1_PREFIX}/tenants`,
|
|
8
|
+
users: `${API_V1_PREFIX}/users`,
|
|
9
|
+
academicYears: `${API_V1_PREFIX}/academic-years`,
|
|
10
|
+
subjects: `${API_V1_PREFIX}/subjects`,
|
|
11
|
+
teachingSchedules: `${API_V1_PREFIX}/teaching-schedules`,
|
|
12
|
+
classrooms: `${API_V1_PREFIX}/classrooms`,
|
|
13
|
+
students: `${API_V1_PREFIX}/students`,
|
|
14
|
+
leads: `${API_V1_PREFIX}/leads`,
|
|
15
|
+
uploads: `${API_V1_PREFIX}/uploads`,
|
|
16
|
+
attendance: `${API_V1_PREFIX}/attendance`,
|
|
17
|
+
health: `${API_V1_PREFIX}/health`
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.API_ENDPOINTS = API_ENDPOINTS;
|
|
21
|
+
exports.API_V1_PREFIX = API_V1_PREFIX;
|
|
22
|
+
//# sourceMappingURL=chunk-QJSOSQ7M.cjs.map
|
|
23
|
+
//# sourceMappingURL=chunk-QJSOSQ7M.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endpoints.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAA,GAAgB;AAEtB,IAAM,aAAA,GAAgB;AAAA,EAC3B,IAAA,EAAM,GAAG,aAAa,CAAA,KAAA,CAAA;AAAA,EACtB,OAAA,EAAS,GAAG,aAAa,CAAA,QAAA,CAAA;AAAA,EACzB,KAAA,EAAO,GAAG,aAAa,CAAA,MAAA,CAAA;AAAA,EACvB,aAAA,EAAe,GAAG,aAAa,CAAA,eAAA,CAAA;AAAA,EAC/B,QAAA,EAAU,GAAG,aAAa,CAAA,SAAA,CAAA;AAAA,EAC1B,iBAAA,EAAmB,GAAG,aAAa,CAAA,mBAAA,CAAA;AAAA,EACnC,UAAA,EAAY,GAAG,aAAa,CAAA,WAAA,CAAA;AAAA,EAC5B,QAAA,EAAU,GAAG,aAAa,CAAA,SAAA,CAAA;AAAA,EAC1B,KAAA,EAAO,GAAG,aAAa,CAAA,MAAA,CAAA;AAAA,EACvB,OAAA,EAAS,GAAG,aAAa,CAAA,QAAA,CAAA;AAAA,EACzB,UAAA,EAAY,GAAG,aAAa,CAAA,WAAA,CAAA;AAAA,EAC5B,MAAA,EAAQ,GAAG,aAAa,CAAA,OAAA;AAC1B","file":"chunk-QJSOSQ7M.cjs","sourcesContent":["export const API_V1_PREFIX = \"/api/v1\";\r\n\r\nexport const API_ENDPOINTS = {\r\n auth: `${API_V1_PREFIX}/auth`,\r\n tenants: `${API_V1_PREFIX}/tenants`,\r\n users: `${API_V1_PREFIX}/users`,\r\n academicYears: `${API_V1_PREFIX}/academic-years`,\r\n subjects: `${API_V1_PREFIX}/subjects`,\r\n teachingSchedules: `${API_V1_PREFIX}/teaching-schedules`,\r\n classrooms: `${API_V1_PREFIX}/classrooms`,\r\n students: `${API_V1_PREFIX}/students`,\r\n leads: `${API_V1_PREFIX}/leads`,\r\n uploads: `${API_V1_PREFIX}/uploads`,\r\n attendance: `${API_V1_PREFIX}/attendance`,\r\n health: `${API_V1_PREFIX}/health`,\r\n} as const;\r\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
|
+
|
|
8
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.academicYears;
|
|
9
|
+
async function listAcademicYears(params) {
|
|
10
|
+
return chunkNGFFI4XQ_cjs.getData(ENDPOINT, { params });
|
|
11
|
+
}
|
|
12
|
+
async function createAcademicYear(payload) {
|
|
13
|
+
return chunkNGFFI4XQ_cjs.postData(ENDPOINT, payload);
|
|
14
|
+
}
|
|
15
|
+
async function updateAcademicYear(id, payload) {
|
|
16
|
+
return chunkNGFFI4XQ_cjs.putData(`${ENDPOINT}/${id}`, payload);
|
|
17
|
+
}
|
|
18
|
+
async function activateAcademicYear(id) {
|
|
19
|
+
return chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/${id}/activate`);
|
|
20
|
+
}
|
|
21
|
+
function useAcademicYears(params) {
|
|
22
|
+
return reactQuery.useQuery({
|
|
23
|
+
queryKey: chunkXVG5Z6B5_cjs.academicYearKeys.list(params),
|
|
24
|
+
queryFn: () => listAcademicYears(params)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function useCreateAcademicYear() {
|
|
28
|
+
const queryClient = reactQuery.useQueryClient();
|
|
29
|
+
return reactQuery.useMutation({
|
|
30
|
+
mutationFn: createAcademicYear,
|
|
31
|
+
onSuccess: async () => {
|
|
32
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.academicYearKeys.all });
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function useUpdateAcademicYear() {
|
|
37
|
+
const queryClient = reactQuery.useQueryClient();
|
|
38
|
+
return reactQuery.useMutation({
|
|
39
|
+
mutationFn: ({ id, payload }) => updateAcademicYear(id, payload),
|
|
40
|
+
onSuccess: async () => {
|
|
41
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.academicYearKeys.all });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function useActivateAcademicYear() {
|
|
46
|
+
const queryClient = reactQuery.useQueryClient();
|
|
47
|
+
return reactQuery.useMutation({
|
|
48
|
+
mutationFn: activateAcademicYear,
|
|
49
|
+
onSuccess: async () => {
|
|
50
|
+
await queryClient.invalidateQueries();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
exports.activateAcademicYear = activateAcademicYear;
|
|
56
|
+
exports.createAcademicYear = createAcademicYear;
|
|
57
|
+
exports.listAcademicYears = listAcademicYears;
|
|
58
|
+
exports.updateAcademicYear = updateAcademicYear;
|
|
59
|
+
exports.useAcademicYears = useAcademicYears;
|
|
60
|
+
exports.useActivateAcademicYear = useActivateAcademicYear;
|
|
61
|
+
exports.useCreateAcademicYear = useCreateAcademicYear;
|
|
62
|
+
exports.useUpdateAcademicYear = useUpdateAcademicYear;
|
|
63
|
+
//# sourceMappingURL=chunk-R37QQTQS.cjs.map
|
|
64
|
+
//# sourceMappingURL=chunk-R37QQTQS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/academic/academic-year.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","academicYearKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAWA,IAAM,WAAWA,+BAAA,CAAc,aAAA;AAE/B,eAAsB,kBACpB,MAAA,EACyB;AACzB,EAAA,OAAOC,yBAAA,CAAwB,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AACrD;AAEA,eAAsB,mBAAmB,OAAA,EAAyD;AAChG,EAAA,OAAOC,0BAAA,CAAgD,UAAU,OAAO,CAAA;AAC1E;AAEA,eAAsB,kBAAA,CACpB,IACA,OAAA,EACuB;AACvB,EAAA,OAAOC,0BAA+C,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AACpF;AAEA,eAAsB,qBAAqB,EAAA,EAAmC;AAC5E,EAAA,OAAOD,0BAAA,CAAuB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAW,CAAA;AAC5D;AAEO,SAAS,iBAAiB,MAAA,EAAyC;AACxE,EAAA,OAAOE,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,kCAAA,CAAiB,IAAA,CAAK,MAA6C,CAAA;AAAA,IAC7E,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,kBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,kBAAA,CAAmB,IAAI,OAAO,CAAA;AAAA,IAChC,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,uBAAA,GAA0B;AACxC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,EAAkB;AAAA,IACtC;AAAA,GACD,CAAA;AACH","file":"chunk-R37QQTQS.cjs","sourcesContent":["import type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { academicYearKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.academicYears;\r\n\r\nexport async function listAcademicYears(\r\n params?: Partial<AcademicYearListQuery>\r\n): Promise<AcademicYear[]> {\r\n return getData<AcademicYear[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createAcademicYear(payload: CreateAcademicYearInput): Promise<AcademicYear> {\r\n return postData<AcademicYear, CreateAcademicYearInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateAcademicYear(\r\n id: string,\r\n payload: UpdateAcademicYearInput\r\n): Promise<AcademicYear> {\r\n return putData<AcademicYear, UpdateAcademicYearInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function activateAcademicYear(id: string): Promise<AcademicYear> {\r\n return postData<AcademicYear>(`${ENDPOINT}/${id}/activate`);\r\n}\r\n\r\nexport function useAcademicYears(params?: Partial<AcademicYearListQuery>) {\r\n return useQuery({\r\n queryKey: academicYearKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listAcademicYears(params),\r\n });\r\n}\r\n\r\nexport function useCreateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateAcademicYearInput }) =>\r\n updateAcademicYear(id, payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useActivateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: activateAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n};\r\n"]}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkPPK3HQOY_cjs = require('./chunk-PPK3HQOY.cjs');
|
|
6
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
7
|
+
var reactQuery = require('@tanstack/react-query');
|
|
8
|
+
|
|
9
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.attendance;
|
|
10
|
+
async function getAttendanceHistory(params) {
|
|
11
|
+
return chunkNGFFI4XQ_cjs.getPaginated(`${ENDPOINT}/history`, { params });
|
|
12
|
+
}
|
|
13
|
+
async function batchSyncAttendance(payload) {
|
|
14
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
15
|
+
`${ENDPOINT}/batch-sync`,
|
|
16
|
+
payload
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
async function updateClassAttendance(payload) {
|
|
20
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
21
|
+
`${ENDPOINT}/class-update`,
|
|
22
|
+
payload
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
async function getDynamicQrStream(params) {
|
|
26
|
+
if (params?.format === "text") {
|
|
27
|
+
const response = await chunkPPK3HQOY_cjs.apiClient.get(`${ENDPOINT}/dynamic-qr/stream`, { params });
|
|
28
|
+
return response.data;
|
|
29
|
+
}
|
|
30
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/dynamic-qr/stream`, { params });
|
|
31
|
+
}
|
|
32
|
+
async function verifyDynamicQr(payload) {
|
|
33
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
34
|
+
`${ENDPOINT}/dynamic-qr/verify`,
|
|
35
|
+
payload
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
async function listPicketSchedules(params) {
|
|
39
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/picket-schedules`, { params });
|
|
40
|
+
}
|
|
41
|
+
async function createPicketAssignment(payload) {
|
|
42
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
43
|
+
`${ENDPOINT}/picket-schedules`,
|
|
44
|
+
payload
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
function useAttendanceHistory(params, enabled = true) {
|
|
48
|
+
return reactQuery.useQuery({
|
|
49
|
+
queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.history(params),
|
|
50
|
+
queryFn: () => getAttendanceHistory(params),
|
|
51
|
+
enabled
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function useDynamicQrStream(params, enabled = true) {
|
|
55
|
+
return reactQuery.useQuery({
|
|
56
|
+
queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.dynamicQrStream(params),
|
|
57
|
+
queryFn: () => getDynamicQrStream(params),
|
|
58
|
+
enabled,
|
|
59
|
+
refetchInterval: 15e3
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function usePicketSchedules(params) {
|
|
63
|
+
return reactQuery.useQuery({
|
|
64
|
+
queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.picketSchedules(params),
|
|
65
|
+
queryFn: () => listPicketSchedules(params)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function useBatchSyncAttendance() {
|
|
69
|
+
const queryClient = reactQuery.useQueryClient();
|
|
70
|
+
return reactQuery.useMutation({
|
|
71
|
+
mutationFn: batchSyncAttendance,
|
|
72
|
+
onSuccess: async () => {
|
|
73
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.all });
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function useUpdateClassAttendance() {
|
|
78
|
+
const queryClient = reactQuery.useQueryClient();
|
|
79
|
+
return reactQuery.useMutation({
|
|
80
|
+
mutationFn: updateClassAttendance,
|
|
81
|
+
onSuccess: async () => {
|
|
82
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.all });
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function useVerifyDynamicQr() {
|
|
87
|
+
return reactQuery.useMutation({ mutationFn: verifyDynamicQr });
|
|
88
|
+
}
|
|
89
|
+
function useCreatePicketAssignment() {
|
|
90
|
+
const queryClient = reactQuery.useQueryClient();
|
|
91
|
+
return reactQuery.useMutation({
|
|
92
|
+
mutationFn: createPicketAssignment,
|
|
93
|
+
onSuccess: async () => {
|
|
94
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.attendanceKeys.all });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
exports.batchSyncAttendance = batchSyncAttendance;
|
|
100
|
+
exports.createPicketAssignment = createPicketAssignment;
|
|
101
|
+
exports.getAttendanceHistory = getAttendanceHistory;
|
|
102
|
+
exports.getDynamicQrStream = getDynamicQrStream;
|
|
103
|
+
exports.listPicketSchedules = listPicketSchedules;
|
|
104
|
+
exports.updateClassAttendance = updateClassAttendance;
|
|
105
|
+
exports.useAttendanceHistory = useAttendanceHistory;
|
|
106
|
+
exports.useBatchSyncAttendance = useBatchSyncAttendance;
|
|
107
|
+
exports.useCreatePicketAssignment = useCreatePicketAssignment;
|
|
108
|
+
exports.useDynamicQrStream = useDynamicQrStream;
|
|
109
|
+
exports.usePicketSchedules = usePicketSchedules;
|
|
110
|
+
exports.useUpdateClassAttendance = useUpdateClassAttendance;
|
|
111
|
+
exports.useVerifyDynamicQr = useVerifyDynamicQr;
|
|
112
|
+
exports.verifyDynamicQr = verifyDynamicQr;
|
|
113
|
+
//# sourceMappingURL=chunk-R7ACSDOA.cjs.map
|
|
114
|
+
//# sourceMappingURL=chunk-R7ACSDOA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":["API_ENDPOINTS","getPaginated","postData","apiClient","getData","useQuery","attendanceKeys","useQueryClient","useMutation"],"mappings":"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","file":"chunk-R7ACSDOA.cjs","sourcesContent":["import type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n TeacherScanDynamicQrRequest,\r\n UpdateClassAttendanceRequest,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { apiClient } from \"../../client/axios-instance\";\r\nimport { getData, getPaginated, postData } from \"../../client/http\";\r\nimport type { PaginatedResult } from \"../../client/types\";\r\nimport { attendanceKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.attendance;\r\n\r\nexport async function getAttendanceHistory(\r\n params: AttendanceHistoryQuery\r\n): Promise<AttendanceHistoryResult> {\r\n return getPaginated<AttendanceHistoryItem>(`${ENDPOINT}/history`, { params });\r\n}\r\n\r\nexport async function batchSyncAttendance(\r\n payload: BatchSyncAttendanceRequest\r\n): Promise<BatchSyncAttendanceResponse> {\r\n return postData<BatchSyncAttendanceResponse, BatchSyncAttendanceRequest>(\r\n `${ENDPOINT}/batch-sync`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function updateClassAttendance(\r\n payload: UpdateClassAttendanceRequest\r\n): Promise<ClassUpdateAttendanceResult> {\r\n return postData<ClassUpdateAttendanceResult, UpdateClassAttendanceRequest>(\r\n `${ENDPOINT}/class-update`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function getDynamicQrStream(\r\n params?: DynamicQrStreamQuery\r\n): Promise<DynamicQrStreamResult | string> {\r\n if (params?.format === \"text\") {\r\n const response = await apiClient.get<string>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n return response.data;\r\n }\r\n return getData<DynamicQrStreamResult>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n}\r\n\r\nexport async function verifyDynamicQr(\r\n payload: TeacherScanDynamicQrRequest\r\n): Promise<DynamicQrVerifyResult> {\r\n return postData<DynamicQrVerifyResult, TeacherScanDynamicQrRequest>(\r\n `${ENDPOINT}/dynamic-qr/verify`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function listPicketSchedules(\r\n params?: Partial<PicketScheduleListQuery>\r\n): Promise<PicketAssignment[]> {\r\n return getData<PicketAssignment[]>(`${ENDPOINT}/picket-schedules`, { params });\r\n}\r\n\r\nexport async function createPicketAssignment(\r\n payload: CreatePicketAssignmentInput\r\n): Promise<PicketAssignment> {\r\n return postData<PicketAssignment, CreatePicketAssignmentInput>(\r\n `${ENDPOINT}/picket-schedules`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useAttendanceHistory(params: AttendanceHistoryQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.history(params as unknown as Record<string, unknown>),\r\n queryFn: () => getAttendanceHistory(params),\r\n enabled,\r\n });\r\n}\r\n\r\nexport function useDynamicQrStream(params: DynamicQrStreamQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.dynamicQrStream(params as unknown as Record<string, unknown>),\r\n queryFn: () => getDynamicQrStream(params),\r\n enabled,\r\n refetchInterval: 15_000,\r\n });\r\n}\r\n\r\nexport function usePicketSchedules(params?: Partial<PicketScheduleListQuery>) {\r\n return useQuery({\r\n queryKey: attendanceKeys.picketSchedules(params as Record<string, unknown> | undefined),\r\n queryFn: () => listPicketSchedules(params),\r\n });\r\n}\r\n\r\nexport function useBatchSyncAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: batchSyncAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateClassAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: updateClassAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useVerifyDynamicQr() {\r\n return useMutation({ mutationFn: verifyDynamicQr });\r\n}\r\n\r\nexport function useCreatePicketAssignment() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createPicketAssignment,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n PaginatedResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n TeacherScanDynamicQrRequest,\r\n UpdateClassAttendanceRequest,\r\n};\r\n"]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { API_ENDPOINTS } from './chunk-MRFGUSN2.js';
|
|
2
|
+
import { getPaginated, postData, getData } from './chunk-6JGO2CUT.js';
|
|
3
|
+
import { apiClient } from './chunk-GRXFSXG5.js';
|
|
4
|
+
import { attendanceKeys } from './chunk-ALMSFTRM.js';
|
|
5
|
+
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
6
|
+
|
|
7
|
+
var ENDPOINT = API_ENDPOINTS.attendance;
|
|
8
|
+
async function getAttendanceHistory(params) {
|
|
9
|
+
return getPaginated(`${ENDPOINT}/history`, { params });
|
|
10
|
+
}
|
|
11
|
+
async function batchSyncAttendance(payload) {
|
|
12
|
+
return postData(
|
|
13
|
+
`${ENDPOINT}/batch-sync`,
|
|
14
|
+
payload
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
async function updateClassAttendance(payload) {
|
|
18
|
+
return postData(
|
|
19
|
+
`${ENDPOINT}/class-update`,
|
|
20
|
+
payload
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
async function getDynamicQrStream(params) {
|
|
24
|
+
if (params?.format === "text") {
|
|
25
|
+
const response = await apiClient.get(`${ENDPOINT}/dynamic-qr/stream`, { params });
|
|
26
|
+
return response.data;
|
|
27
|
+
}
|
|
28
|
+
return getData(`${ENDPOINT}/dynamic-qr/stream`, { params });
|
|
29
|
+
}
|
|
30
|
+
async function verifyDynamicQr(payload) {
|
|
31
|
+
return postData(
|
|
32
|
+
`${ENDPOINT}/dynamic-qr/verify`,
|
|
33
|
+
payload
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
async function listPicketSchedules(params) {
|
|
37
|
+
return getData(`${ENDPOINT}/picket-schedules`, { params });
|
|
38
|
+
}
|
|
39
|
+
async function createPicketAssignment(payload) {
|
|
40
|
+
return postData(
|
|
41
|
+
`${ENDPOINT}/picket-schedules`,
|
|
42
|
+
payload
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
function useAttendanceHistory(params, enabled = true) {
|
|
46
|
+
return useQuery({
|
|
47
|
+
queryKey: attendanceKeys.history(params),
|
|
48
|
+
queryFn: () => getAttendanceHistory(params),
|
|
49
|
+
enabled
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function useDynamicQrStream(params, enabled = true) {
|
|
53
|
+
return useQuery({
|
|
54
|
+
queryKey: attendanceKeys.dynamicQrStream(params),
|
|
55
|
+
queryFn: () => getDynamicQrStream(params),
|
|
56
|
+
enabled,
|
|
57
|
+
refetchInterval: 15e3
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function usePicketSchedules(params) {
|
|
61
|
+
return useQuery({
|
|
62
|
+
queryKey: attendanceKeys.picketSchedules(params),
|
|
63
|
+
queryFn: () => listPicketSchedules(params)
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function useBatchSyncAttendance() {
|
|
67
|
+
const queryClient = useQueryClient();
|
|
68
|
+
return useMutation({
|
|
69
|
+
mutationFn: batchSyncAttendance,
|
|
70
|
+
onSuccess: async () => {
|
|
71
|
+
await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function useUpdateClassAttendance() {
|
|
76
|
+
const queryClient = useQueryClient();
|
|
77
|
+
return useMutation({
|
|
78
|
+
mutationFn: updateClassAttendance,
|
|
79
|
+
onSuccess: async () => {
|
|
80
|
+
await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function useVerifyDynamicQr() {
|
|
85
|
+
return useMutation({ mutationFn: verifyDynamicQr });
|
|
86
|
+
}
|
|
87
|
+
function useCreatePicketAssignment() {
|
|
88
|
+
const queryClient = useQueryClient();
|
|
89
|
+
return useMutation({
|
|
90
|
+
mutationFn: createPicketAssignment,
|
|
91
|
+
onSuccess: async () => {
|
|
92
|
+
await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { batchSyncAttendance, createPicketAssignment, getAttendanceHistory, getDynamicQrStream, listPicketSchedules, updateClassAttendance, useAttendanceHistory, useBatchSyncAttendance, useCreatePicketAssignment, useDynamicQrStream, usePicketSchedules, useUpdateClassAttendance, useVerifyDynamicQr, verifyDynamicQr };
|
|
98
|
+
//# sourceMappingURL=chunk-S6QFHKCE.js.map
|
|
99
|
+
//# sourceMappingURL=chunk-S6QFHKCE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":[],"mappings":";;;;;;AAuBA,IAAM,WAAW,aAAA,CAAc,UAAA;AAE/B,eAAsB,qBACpB,MAAA,EACkC;AAClC,EAAA,OAAO,aAAoC,CAAA,EAAG,QAAQ,CAAA,QAAA,CAAA,EAAY,EAAE,QAAQ,CAAA;AAC9E;AAEA,eAAsB,oBACpB,OAAA,EACsC;AACtC,EAAA,OAAO,QAAA;AAAA,IACL,GAAG,QAAQ,CAAA,WAAA,CAAA;AAAA,IACX;AAAA,GACF;AACF;AAEA,eAAsB,sBACpB,OAAA,EACsC;AACtC,EAAA,OAAO,QAAA;AAAA,IACL,GAAG,QAAQ,CAAA,aAAA,CAAA;AAAA,IACX;AAAA,GACF;AACF;AAEA,eAAsB,mBACpB,MAAA,EACyC;AACzC,EAAA,IAAI,MAAA,EAAQ,WAAW,MAAA,EAAQ;AAC7B,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,GAAA,CAAY,GAAG,QAAQ,CAAA,kBAAA,CAAA,EAAsB,EAAE,MAAA,EAAQ,CAAA;AACxF,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AACA,EAAA,OAAO,QAA+B,CAAA,EAAG,QAAQ,CAAA,kBAAA,CAAA,EAAsB,EAAE,QAAQ,CAAA;AACnF;AAEA,eAAsB,gBACpB,OAAA,EACgC;AAChC,EAAA,OAAO,QAAA;AAAA,IACL,GAAG,QAAQ,CAAA,kBAAA,CAAA;AAAA,IACX;AAAA,GACF;AACF;AAEA,eAAsB,oBACpB,MAAA,EAC6B;AAC7B,EAAA,OAAO,QAA4B,CAAA,EAAG,QAAQ,CAAA,iBAAA,CAAA,EAAqB,EAAE,QAAQ,CAAA;AAC/E;AAEA,eAAsB,uBACpB,OAAA,EAC2B;AAC3B,EAAA,OAAO,QAAA;AAAA,IACL,GAAG,QAAQ,CAAA,iBAAA,CAAA;AAAA,IACX;AAAA,GACF;AACF;AAEO,SAAS,oBAAA,CAAqB,MAAA,EAAgC,OAAA,GAAU,IAAA,EAAM;AACnF,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,QAAA,EAAU,cAAA,CAAe,OAAA,CAAQ,MAA4C,CAAA;AAAA,IAC7E,OAAA,EAAS,MAAM,oBAAA,CAAqB,MAAM,CAAA;AAAA,IAC1C;AAAA,GACD,CAAA;AACH;AAEO,SAAS,kBAAA,CAAmB,MAAA,EAA8B,OAAA,GAAU,IAAA,EAAM;AAC/E,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,QAAA,EAAU,cAAA,CAAe,eAAA,CAAgB,MAA4C,CAAA;AAAA,IACrF,OAAA,EAAS,MAAM,kBAAA,CAAmB,MAAM,CAAA;AAAA,IACxC,OAAA;AAAA,IACA,eAAA,EAAiB;AAAA,GAClB,CAAA;AACH;AAEO,SAAS,mBAAmB,MAAA,EAA2C;AAC5E,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,QAAA,EAAU,cAAA,CAAe,eAAA,CAAgB,MAA6C,CAAA;AAAA,IACtF,OAAA,EAAS,MAAM,mBAAA,CAAoB,MAAM;AAAA,GAC1C,CAAA;AACH;AAEO,SAAS,sBAAA,GAAyB;AACvC,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,OAAO,WAAA,CAAY;AAAA,IACjB,UAAA,EAAY,mBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAU,cAAA,CAAe,KAAK,CAAA;AAAA,IACtE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,wBAAA,GAA2B;AACzC,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,OAAO,WAAA,CAAY;AAAA,IACjB,UAAA,EAAY,qBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAU,cAAA,CAAe,KAAK,CAAA;AAAA,IACtE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,kBAAA,GAAqB;AACnC,EAAA,OAAO,WAAA,CAAY,EAAE,UAAA,EAAY,eAAA,EAAiB,CAAA;AACpD;AAEO,SAAS,yBAAA,GAA4B;AAC1C,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,OAAO,WAAA,CAAY;AAAA,IACjB,UAAA,EAAY,sBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAU,cAAA,CAAe,KAAK,CAAA;AAAA,IACtE;AAAA,GACD,CAAA;AACH","file":"chunk-S6QFHKCE.js","sourcesContent":["import type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n TeacherScanDynamicQrRequest,\r\n UpdateClassAttendanceRequest,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { apiClient } from \"../../client/axios-instance\";\r\nimport { getData, getPaginated, postData } from \"../../client/http\";\r\nimport type { PaginatedResult } from \"../../client/types\";\r\nimport { attendanceKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.attendance;\r\n\r\nexport async function getAttendanceHistory(\r\n params: AttendanceHistoryQuery\r\n): Promise<AttendanceHistoryResult> {\r\n return getPaginated<AttendanceHistoryItem>(`${ENDPOINT}/history`, { params });\r\n}\r\n\r\nexport async function batchSyncAttendance(\r\n payload: BatchSyncAttendanceRequest\r\n): Promise<BatchSyncAttendanceResponse> {\r\n return postData<BatchSyncAttendanceResponse, BatchSyncAttendanceRequest>(\r\n `${ENDPOINT}/batch-sync`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function updateClassAttendance(\r\n payload: UpdateClassAttendanceRequest\r\n): Promise<ClassUpdateAttendanceResult> {\r\n return postData<ClassUpdateAttendanceResult, UpdateClassAttendanceRequest>(\r\n `${ENDPOINT}/class-update`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function getDynamicQrStream(\r\n params?: DynamicQrStreamQuery\r\n): Promise<DynamicQrStreamResult | string> {\r\n if (params?.format === \"text\") {\r\n const response = await apiClient.get<string>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n return response.data;\r\n }\r\n return getData<DynamicQrStreamResult>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n}\r\n\r\nexport async function verifyDynamicQr(\r\n payload: TeacherScanDynamicQrRequest\r\n): Promise<DynamicQrVerifyResult> {\r\n return postData<DynamicQrVerifyResult, TeacherScanDynamicQrRequest>(\r\n `${ENDPOINT}/dynamic-qr/verify`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function listPicketSchedules(\r\n params?: Partial<PicketScheduleListQuery>\r\n): Promise<PicketAssignment[]> {\r\n return getData<PicketAssignment[]>(`${ENDPOINT}/picket-schedules`, { params });\r\n}\r\n\r\nexport async function createPicketAssignment(\r\n payload: CreatePicketAssignmentInput\r\n): Promise<PicketAssignment> {\r\n return postData<PicketAssignment, CreatePicketAssignmentInput>(\r\n `${ENDPOINT}/picket-schedules`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useAttendanceHistory(params: AttendanceHistoryQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.history(params as unknown as Record<string, unknown>),\r\n queryFn: () => getAttendanceHistory(params),\r\n enabled,\r\n });\r\n}\r\n\r\nexport function useDynamicQrStream(params: DynamicQrStreamQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.dynamicQrStream(params as unknown as Record<string, unknown>),\r\n queryFn: () => getDynamicQrStream(params),\r\n enabled,\r\n refetchInterval: 15_000,\r\n });\r\n}\r\n\r\nexport function usePicketSchedules(params?: Partial<PicketScheduleListQuery>) {\r\n return useQuery({\r\n queryKey: attendanceKeys.picketSchedules(params as Record<string, unknown> | undefined),\r\n queryFn: () => listPicketSchedules(params),\r\n });\r\n}\r\n\r\nexport function useBatchSyncAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: batchSyncAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateClassAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: updateClassAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useVerifyDynamicQr() {\r\n return useMutation({ mutationFn: verifyDynamicQr });\r\n}\r\n\r\nexport function useCreatePicketAssignment() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createPicketAssignment,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n PaginatedResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n TeacherScanDynamicQrRequest,\r\n UpdateClassAttendanceRequest,\r\n};\r\n"]}
|