analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
91 lines (84 loc) • 3.2 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});// src/hooks/useQuestionsData.ts
var _react = require('react');
var _zod = require('zod');
var trendDirectionSchema = _zod.z.enum(["up", "down", "stable"]);
var trendSchema = _zod.z.object({
totalQuestions: _zod.z.number(),
correctPercentage: _zod.z.number(),
direction: trendDirectionSchema
}).nullable();
var questionsDataApiResponseSchema = _zod.z.object({
message: _zod.z.string(),
data: _zod.z.object({
totalQuestions: _zod.z.number().min(0),
correctQuestions: _zod.z.number().min(0),
incorrectQuestions: _zod.z.number().min(0),
blankQuestions: _zod.z.number().min(0),
correctPercentage: _zod.z.number().min(0).max(100),
incorrectPercentage: _zod.z.number().min(0).max(100),
blankPercentage: _zod.z.number().min(0).max(100),
trend: trendSchema
})
});
var transformQuestionsData = (apiData) => ({
total: apiData.totalQuestions,
corretas: apiData.correctQuestions,
incorretas: apiData.incorrectQuestions,
emBranco: apiData.blankQuestions,
correctPercentage: apiData.correctPercentage,
incorrectPercentage: apiData.incorrectPercentage,
blankPercentage: apiData.blankPercentage,
trend: apiData.trend
});
var handleQuestionsDataFetchError = (error) => {
if (error instanceof _zod.z.ZodError) {
console.error("Erro ao validar dados de quest\xF5es:", error);
return "Erro ao validar dados de quest\xF5es";
}
console.error("Erro ao carregar dados de quest\xF5es:", error);
return "Erro ao carregar dados de quest\xF5es";
};
var initialState = {
data: null,
loading: false,
error: null
};
var createUseQuestionsData = (fetchQuestionsDataApi) => {
return () => {
const [state, setState] = _react.useState.call(void 0, initialState);
const fetchQuestionsData = _react.useCallback.call(void 0,
async (filters) => {
setState((prev) => ({ ...prev, loading: true, error: null }));
try {
const responseData = await fetchQuestionsDataApi(filters);
const validatedData = questionsDataApiResponseSchema.parse(responseData);
const transformedData = transformQuestionsData(validatedData.data);
setState({
data: transformedData,
loading: false,
error: null
});
} catch (error) {
const errorMessage = handleQuestionsDataFetchError(error);
setState((prev) => ({
...prev,
loading: false,
error: errorMessage
}));
}
},
[fetchQuestionsDataApi]
);
const reset = _react.useCallback.call(void 0, () => {
setState(initialState);
}, []);
return {
...state,
fetchQuestionsData,
reset
};
};
};
var createQuestionsDataHook = createUseQuestionsData;
exports.questionsDataApiResponseSchema = questionsDataApiResponseSchema; exports.transformQuestionsData = transformQuestionsData; exports.handleQuestionsDataFetchError = handleQuestionsDataFetchError; exports.createUseQuestionsData = createUseQuestionsData; exports.createQuestionsDataHook = createQuestionsDataHook;
//# sourceMappingURL=chunk-OAWMQTCP.js.map