analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
116 lines (110 loc) • 4.9 kB
JavaScript
;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