UNPKG

analytica-frontend-lib

Version:

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

145 lines (141 loc) 4.57 kB
import { validateStep } from "./chunk-MSG5POSR.mjs"; // src/components/SendActivityModal/hooks/useSendActivityModal.ts import { create } from "zustand"; // src/utils/extractStudentsFromCategories.ts function extractStudentsFromCategories(categories) { const studentsCategory = categories.find((cat) => cat.key === "students"); if (!studentsCategory?.selectedIds || !studentsCategory.itens) { return []; } return studentsCategory.selectedIds.map((id) => { const student = studentsCategory.itens?.find((item) => item.id === id); if (student) { const rawUserInstId = student.userInstitutionId; const rawInstId = student.institutionId; const rawStudentId = student.studentId; let userInstitutionId = ""; if (typeof rawUserInstId === "string" || typeof rawUserInstId === "number") { userInstitutionId = String(rawUserInstId); } else if (typeof rawInstId === "string" || typeof rawInstId === "number") { userInstitutionId = String(rawInstId); } let studentId; if (typeof rawStudentId === "string" || typeof rawStudentId === "number") { studentId = String(rawStudentId); } else { studentId = String(student.id); } if (!userInstitutionId) { return null; } return { studentId, userInstitutionId }; } return null; }).filter((s) => s !== null); } // src/components/SendActivityModal/hooks/useSendActivityModal.ts var initialState = { formData: { canRetry: false, startTime: "00:00", finalTime: "23:59" }, currentStep: 1, completedSteps: [], errors: {}, categories: [] }; var useSendActivityModalStore = create( (set, get) => ({ ...initialState, setFormData: (data) => { set((state) => ({ formData: { ...state.formData, ...data } })); }, goToStep: (step) => { if (step >= 1 && step <= 3) { set({ currentStep: step, errors: {} }); } }, nextStep: (enableExamMode) => { const state = get(); const isValid = state.validateCurrentStep(enableExamMode); if (isValid && state.currentStep < 3) { set((prev) => ({ currentStep: prev.currentStep + 1, completedSteps: prev.completedSteps.includes(prev.currentStep) ? prev.completedSteps : [...prev.completedSteps, prev.currentStep], errors: {} })); return true; } return isValid; }, previousStep: () => { const state = get(); if (state.currentStep > 1) { set({ currentStep: state.currentStep - 1, errors: {} }); } }, setErrors: (errors) => { set({ errors }); }, validateCurrentStep: (enableExamMode) => { const state = get(); let formDataToValidate = state.formData; let updatedFormData = state.formData; if (state.currentStep === 2 && state.categories.length > 0) { const students = extractStudentsFromCategories(state.categories); formDataToValidate = { ...state.formData, students }; updatedFormData = formDataToValidate; } const options = { enableExamMode }; const errors = validateStep( state.currentStep, formDataToValidate, options ); set({ formData: updatedFormData, errors }); return Object.keys(errors).length === 0; }, validateAllSteps: (enableExamMode) => { const state = get(); let formDataForStep2 = state.formData; if (state.categories.length > 0) { const students = extractStudentsFromCategories(state.categories); formDataForStep2 = { ...state.formData, students }; } const options = { enableExamMode }; const errors1 = validateStep(1, state.formData, options); const errors2 = validateStep(2, formDataForStep2); const errors3 = validateStep(3, state.formData, options); const allErrors = { ...errors1, ...errors2, ...errors3 }; set({ errors: allErrors }); return Object.keys(allErrors).length === 0; }, setCategories: (categories) => { const students = extractStudentsFromCategories(categories); set((state) => ({ categories, formData: { ...state.formData, students } })); }, reset: () => { set({ ...initialState, categories: [] }); } }) ); function useSendActivityModal() { return useSendActivityModalStore(); } export { extractStudentsFromCategories, useSendActivityModalStore, useSendActivityModal }; //# sourceMappingURL=chunk-MMCTPGXO.mjs.map