UNPKG

analytica-frontend-lib

Version:

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

227 lines (208 loc) 8.85 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _chunkFVIK3TDVjs = require('./chunk-FVIK3TDV.js'); var _chunk536MQUJGjs = require('./chunk-536MQUJG.js'); // src/hooks/useRecommendedClassDrafts.ts var _react = require('react'); // src/hooks/useRecommendedClassModels.ts var _zod = require('zod'); var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs); var recommendedClassModelResponseSchema = _zod.z.object({ id: _zod.z.string().uuid(), type: _zod.z.nativeEnum(_chunk536MQUJGjs.RecommendedClassDraftType), title: _zod.z.string(), description: _zod.z.string().nullable(), creatorUserInstitutionId: _zod.z.string().uuid(), subjectId: _zod.z.string().uuid().nullable(), subject: _zod.z.object({ id: _zod.z.string(), name: _zod.z.string() }).nullable().optional(), startDate: _zod.z.string().nullable(), finalDate: _zod.z.string().nullable(), createdAt: _zod.z.string(), updatedAt: _zod.z.string(), // Activity drafts attached to this model. Kept in the schema so Zod // preserves the field during validation — used to derive // activityDraftsCount for the send-modal "Permitir refazer?" gate. activityDrafts: _zod.z.array( _zod.z.object({ activityDraftId: _zod.z.uuid(), sequence: _zod.z.number(), title: _zod.z.string().nullable().optional() }) ).optional().default([]) }); var recommendedClassModelsApiResponseSchema = _zod.z.object({ message: _zod.z.string(), data: _zod.z.object({ drafts: _zod.z.array(recommendedClassModelResponseSchema), total: _zod.z.number() }) }); var DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION = { total: 0, page: 1, limit: 10, totalPages: 0 }; var transformRecommendedClassModelToTableItem = (model, subjectsMap) => { const subjectName = _optionalChain([model, 'access', _ => _.subject, 'optionalAccess', _2 => _2.name]) || (model.subjectId ? _optionalChain([subjectsMap, 'optionalAccess', _3 => _3.get, 'call', _4 => _4(model.subjectId)]) || "" : ""); return { id: model.id, title: model.title || "Sem t\xEDtulo", savedAt: _dayjs2.default.call(void 0, model.createdAt).format("DD/MM/YYYY"), subject: subjectName, subjectId: model.subjectId, activityDraftsCount: _nullishCoalesce(_optionalChain([model, 'access', _5 => _5.activityDrafts, 'optionalAccess', _6 => _6.length]), () => ( 0)) }; }; var handleRecommendedClassModelFetchError = _chunkFVIK3TDVjs.createFetchErrorHandler.call(void 0, "Erro ao validar dados de modelos de aulas", "Erro ao carregar modelos de aulas" ); var createUseRecommendedClassModels = (apiClient) => { return () => { const [state, setState] = _react.useState.call(void 0, { models: [], loading: false, error: null, pagination: DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION }); const fetchModels = _react.useCallback.call(void 0, async (filters, subjectsMap) => { setState((prev) => ({ ...prev, loading: true, error: null })); try { const response = await apiClient.get( "/recommended-class/drafts", { params: filters } ); const validatedData = recommendedClassModelsApiResponseSchema.parse( response.data ); const tableItems = validatedData.data.drafts.map( (model) => transformRecommendedClassModelToTableItem(model, subjectsMap) ); const limit = _optionalChain([filters, 'optionalAccess', _7 => _7.limit]) || 10; const page = _optionalChain([filters, 'optionalAccess', _8 => _8.page]) || 1; const total = validatedData.data.total; const totalPages = Math.ceil(total / limit); setState({ models: tableItems, loading: false, error: null, pagination: { total, page, limit, totalPages } }); } catch (error) { const errorMessage = handleRecommendedClassModelFetchError(error); setState((prev) => ({ ...prev, loading: false, error: errorMessage })); } }, [apiClient] ); const deleteModel = _react.useCallback.call(void 0, async (id) => { try { await apiClient.delete(`/recommended-class/drafts/${id}`); return true; } catch (error) { console.error("Erro ao deletar modelo:", error); return false; } }, [apiClient] ); return { ...state, fetchModels, deleteModel }; }; }; var createRecommendedClassModelsHook = createUseRecommendedClassModels; // src/hooks/useRecommendedClassDrafts.ts var DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION = { total: 0, page: 1, limit: 10, totalPages: 0 }; var handleRecommendedClassDraftFetchError = _chunkFVIK3TDVjs.createFetchErrorHandler.call(void 0, "Erro ao validar dados de rascunhos de aulas", "Erro ao carregar rascunhos de aulas" ); var createUseRecommendedClassDrafts = (apiClient) => { return () => { const [state, setState] = _react.useState.call(void 0, { models: [], loading: false, error: null, pagination: DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION }); const fetchModels = _react.useCallback.call(void 0, async (filters, subjectsMap) => { setState((prev) => ({ ...prev, loading: true, error: null })); try { const response = await apiClient.get( "/recommended-class/drafts", { params: filters } ); const validatedData = recommendedClassModelsApiResponseSchema.parse( response.data ); const tableItems = validatedData.data.drafts.map( (draft) => transformRecommendedClassModelToTableItem(draft, subjectsMap) ); const limit = _optionalChain([filters, 'optionalAccess', _9 => _9.limit]) || 10; const page = _optionalChain([filters, 'optionalAccess', _10 => _10.page]) || 1; const total = validatedData.data.total; const totalPages = Math.ceil(total / limit); setState({ models: tableItems, loading: false, error: null, pagination: { total, page, limit, totalPages } }); } catch (error) { const errorMessage = handleRecommendedClassDraftFetchError(error); setState((prev) => ({ ...prev, loading: false, error: errorMessage })); } }, [apiClient] ); const deleteModel = _react.useCallback.call(void 0, async (id) => { try { await apiClient.delete(`/recommended-class/drafts/${id}`); return true; } catch (error) { console.error("Erro ao deletar rascunho:", error); return false; } }, [apiClient] ); return { ...state, fetchModels, deleteModel }; }; }; var createRecommendedClassDraftsHook = createUseRecommendedClassDrafts; exports.recommendedClassModelsApiResponseSchema = recommendedClassModelsApiResponseSchema; exports.DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION = DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION; exports.transformRecommendedClassModelToTableItem = transformRecommendedClassModelToTableItem; exports.handleRecommendedClassModelFetchError = handleRecommendedClassModelFetchError; exports.createUseRecommendedClassModels = createUseRecommendedClassModels; exports.createRecommendedClassModelsHook = createRecommendedClassModelsHook; exports.DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION = DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION; exports.handleRecommendedClassDraftFetchError = handleRecommendedClassDraftFetchError; exports.createUseRecommendedClassDrafts = createUseRecommendedClassDrafts; exports.createRecommendedClassDraftsHook = createRecommendedClassDraftsHook; //# sourceMappingURL=chunk-2S53HGFX.js.map