analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
77 lines (76 loc) • 2.13 kB
JavaScript
// src/hooks/useSimulations.ts
import { useCallback, useMemo } from "react";
var BASE_URL = "/performance/simulations";
var segment = (value) => encodeURIComponent(value);
var createUseSimulations = (apiClient) => () => {
const fetchStudents = useCallback(
async (filters = {}) => {
const { page = 1, limit = 20, search, classIds } = filters;
const response = await apiClient.get(
`${BASE_URL}/students`,
{ params: { page, limit, search, classIds } }
);
return response.data.data.students;
},
[]
);
const fetchStudentSimulations = useCallback(
async (userInstitutionId, filters = {}) => {
const { page = 1, limit = 20 } = filters;
const response = await apiClient.get(
`${BASE_URL}/students/${segment(userInstitutionId)}`,
{ params: { page, limit } }
);
return response.data.data;
},
[]
);
const fetchSimulationDetail = useCallback(
async (userInstitutionId, simulationId) => {
const response = await apiClient.get(
`${BASE_URL}/students/${segment(userInstitutionId)}/${segment(simulationId)}`
);
return response.data.data;
},
[]
);
const fetchNote = useCallback(
async (userInstitutionId, simulationId) => {
const response = await apiClient.get(
`${BASE_URL}/students/${segment(userInstitutionId)}/${segment(simulationId)}/note`
);
return response.data.data;
},
[]
);
const saveNote = useCallback(
async (userInstitutionId, simulationId, note) => {
const response = await apiClient.post(
`${BASE_URL}/students/${segment(userInstitutionId)}/${segment(simulationId)}/note`,
{ note }
);
return response.data.data;
},
[]
);
return useMemo(
() => ({
fetchStudents,
fetchStudentSimulations,
fetchSimulationDetail,
fetchNote,
saveNote
}),
[
fetchStudents,
fetchStudentSimulations,
fetchSimulationDetail,
fetchNote,
saveNote
]
);
};
export {
createUseSimulations
};
//# sourceMappingURL=chunk-37WFJLC5.mjs.map