UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

91 lines (84 loc) 3.2 kB
"use strict";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