UNPKG

analytica-frontend-lib

Version:

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

116 lines (110 loc) 4.9 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunkZXOYMRH5js = require('./chunk-ZXOYMRH5.js'); // src/hooks/useSendActivity.ts var _react = require('react'); var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs); function toISODateTime(date, time) { return _dayjs2.default.call(void 0, `${date}T${time}`).toISOString(); } function useSendActivity(config) { const { api, onSuccess, onError } = config; const [isOpen, setIsOpen] = _react.useState.call(void 0, false); const [selectedModel, setSelectedModel] = _react.useState.call(void 0, null ); const [categories, setCategories] = _react.useState.call(void 0, []); const [isLoading, setIsLoading] = _react.useState.call(void 0, false); const [isCategoriesLoading, setIsCategoriesLoading] = _react.useState.call(void 0, false); const categoriesLoadedRef = _react.useRef.call(void 0, false); const initialData = _react.useMemo.call(void 0, () => { if (!selectedModel) return void 0; return { title: selectedModel.title }; }, [selectedModel]); const loadCategories = _react.useCallback.call(void 0, async () => { if (categoriesLoadedRef.current) return; setIsCategoriesLoading(true); try { const categoryConfig = await _chunkZXOYMRH5js.loadCategoriesData.call(void 0, api, []); setCategories(categoryConfig); categoriesLoadedRef.current = true; } catch (error) { console.error("Error loading categories:", error); _optionalChain([onError, 'optionalCall', _ => _("Erro ao carregar destinat\xE1rios")]); } finally { setIsCategoriesLoading(false); } }, [api, onError]); const openModal = _react.useCallback.call(void 0, (model) => { setSelectedModel(model); setIsOpen(true); void loadCategories(); }, [loadCategories] ); const closeModal = _react.useCallback.call(void 0, () => { setIsOpen(false); setSelectedModel(null); }, []); const { handleCategoriesChange: onCategoriesChange } = _chunkZXOYMRH5js.useDynamicStudentFetching.call(void 0, setCategories, { apiClient: api }); const handleSubmit = _react.useCallback.call(void 0, async (data) => { if (!selectedModel) return; setIsLoading(true); try { let questionIds = null; try { const response = await api.get(`/activity-drafts/${selectedModel.id}`); questionIds = _optionalChain([response, 'access', _2 => _2.data, 'access', _3 => _3.data, 'access', _4 => _4.selectedQuestions, 'optionalAccess', _5 => _5.map, 'call', _6 => _6((q) => q.id)]) || null; } catch (e) { questionIds = null; } if (!questionIds || questionIds.length === 0) { throw new Error("N\xE3o foi poss\xEDvel obter quest\xF5es do modelo"); } const createResponse = await api.post( "/activities", { title: data.title, subjectId: selectedModel.subjectId, questionIds, subtype: data.subtype, isDigital: data.subtype === "PROVA" /* PROVA */ ? data.mode !== "PRESENCIAL" /* PRESENCIAL */ : true, notification: data.notification, startDate: toISODateTime(data.startDate, data.startTime), finalDate: toISODateTime(data.finalDate, data.finalTime), canRetry: data.canRetry } ); await api.post("/activities/send-to-students", { activityId: createResponse.data.data.id, students: data.students }); _optionalChain([onSuccess, 'optionalCall', _7 => _7(`Atividade enviada para ${data.students.length} aluno(s)`)]); closeModal(); } catch (error) { console.error("Error sending activity:", error); _optionalChain([onError, 'optionalCall', _8 => _8("Erro ao enviar atividade")]); } finally { setIsLoading(false); } }, [selectedModel, api, onSuccess, onError, closeModal] ); return { isOpen, openModal, closeModal, selectedModel, initialData, categories, onCategoriesChange, isLoading, isCategoriesLoading, handleSubmit }; } exports.useSendActivity = useSendActivity; //# sourceMappingURL=chunk-WW3ZBI4W.js.map