analytica-frontend-lib 1.2.81 → 1.2.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActivitiesHistory/index.js +34 -43
- package/dist/ActivitiesHistory/index.js.map +1 -1
- package/dist/ActivitiesHistory/index.mjs +34 -43
- package/dist/ActivitiesHistory/index.mjs.map +1 -1
- package/dist/ActivityDetails/index.js +30 -38
- package/dist/ActivityDetails/index.js.map +1 -1
- package/dist/ActivityDetails/index.mjs +30 -38
- package/dist/ActivityDetails/index.mjs.map +1 -1
- package/dist/ActivityFilters/index.js +30 -38
- package/dist/ActivityFilters/index.js.map +1 -1
- package/dist/ActivityFilters/index.mjs +30 -38
- package/dist/ActivityFilters/index.mjs.map +1 -1
- package/dist/AlertManager/index.js +30 -38
- package/dist/AlertManager/index.js.map +1 -1
- package/dist/AlertManager/index.mjs +30 -38
- package/dist/AlertManager/index.mjs.map +1 -1
- package/dist/RecommendedLessonsHistory/index.js +34 -43
- package/dist/RecommendedLessonsHistory/index.js.map +1 -1
- package/dist/RecommendedLessonsHistory/index.mjs +34 -43
- package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
- package/dist/SendActivityModal/SendActivityModal.js +30 -38
- package/dist/SendActivityModal/SendActivityModal.js.map +1 -1
- package/dist/SendActivityModal/SendActivityModal.mjs +30 -38
- package/dist/SendActivityModal/SendActivityModal.mjs.map +1 -1
- package/dist/SendActivityModal/index.js +30 -38
- package/dist/SendActivityModal/index.js.map +1 -1
- package/dist/SendActivityModal/index.mjs +30 -38
- package/dist/SendActivityModal/index.mjs.map +1 -1
- package/dist/TableProvider/index.js +30 -38
- package/dist/TableProvider/index.js.map +1 -1
- package/dist/TableProvider/index.mjs +30 -38
- package/dist/TableProvider/index.mjs.map +1 -1
- package/dist/hooks/useRecommendedLessonsPage/index.d.ts +218 -0
- package/dist/hooks/useRecommendedLessonsPage/index.d.ts.map +1 -0
- package/dist/hooks/useRecommendedLessonsPage/index.js +247 -0
- package/dist/hooks/useRecommendedLessonsPage/index.js.map +1 -0
- package/dist/hooks/useRecommendedLessonsPage/index.mjs +221 -0
- package/dist/hooks/useRecommendedLessonsPage/index.mjs.map +1 -0
- package/dist/hooks/useRecommendedLessonsPage.d.ts +218 -0
- package/dist/hooks/useRecommendedLessonsPage.d.ts.map +1 -0
- package/dist/hooks/useSendActivity/index.js +1 -1
- package/dist/hooks/useSendActivity/index.js.map +1 -1
- package/dist/hooks/useSendActivity/index.mjs +1 -1
- package/dist/hooks/useSendActivity/index.mjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +344 -133
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +333 -124
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2007,9 +2007,9 @@ var CheckboxGroup = ({
|
|
|
2007
2007
|
showSingleItem = false
|
|
2008
2008
|
}) => {
|
|
2009
2009
|
const [openAccordion, setOpenAccordion] = useState3("");
|
|
2010
|
-
const autoSelectionAppliedRef = useRef3(false);
|
|
2011
2010
|
const onCategoriesChangeRef = useRef3(onCategoriesChange);
|
|
2012
2011
|
const previousCategoriesRef = useRef3(categories);
|
|
2012
|
+
const appliedAutoSelectionRef = useRef3("");
|
|
2013
2013
|
useEffect2(() => {
|
|
2014
2014
|
onCategoriesChangeRef.current = onCategoriesChange;
|
|
2015
2015
|
}, [onCategoriesChange]);
|
|
@@ -2030,9 +2030,6 @@ var CheckboxGroup = ({
|
|
|
2030
2030
|
}, [categories]);
|
|
2031
2031
|
useEffect2(() => {
|
|
2032
2032
|
const categoriesChanged = categories !== previousCategoriesRef.current;
|
|
2033
|
-
if (!categoriesChanged && autoSelectionAppliedRef.current) {
|
|
2034
|
-
return;
|
|
2035
|
-
}
|
|
2036
2033
|
previousCategoriesRef.current = categories;
|
|
2037
2034
|
const hasAutoSelectionChanges = categoriesWithAutoSelection.some(
|
|
2038
2035
|
(cat, index) => {
|
|
@@ -2040,11 +2037,18 @@ var CheckboxGroup = ({
|
|
|
2040
2037
|
return !areSelectedIdsEqual(cat.selectedIds, originalCat.selectedIds);
|
|
2041
2038
|
}
|
|
2042
2039
|
);
|
|
2043
|
-
if (hasAutoSelectionChanges) {
|
|
2044
|
-
|
|
2040
|
+
if (!hasAutoSelectionChanges) {
|
|
2041
|
+
if (categoriesChanged) {
|
|
2042
|
+
appliedAutoSelectionRef.current = "";
|
|
2043
|
+
}
|
|
2044
|
+
return;
|
|
2045
|
+
}
|
|
2046
|
+
const autoSelectionSignature = JSON.stringify(
|
|
2047
|
+
categoriesWithAutoSelection.map((c) => c.selectedIds)
|
|
2048
|
+
);
|
|
2049
|
+
if (appliedAutoSelectionRef.current !== autoSelectionSignature) {
|
|
2050
|
+
appliedAutoSelectionRef.current = autoSelectionSignature;
|
|
2045
2051
|
onCategoriesChangeRef.current(categoriesWithAutoSelection);
|
|
2046
|
-
} else if (categoriesChanged) {
|
|
2047
|
-
autoSelectionAppliedRef.current = false;
|
|
2048
2052
|
}
|
|
2049
2053
|
}, [categoriesWithAutoSelection, categories]);
|
|
2050
2054
|
const isCheckBoxIsSelected = (categoryKey, itemId) => {
|
|
@@ -2301,36 +2305,24 @@ var CheckboxGroup = ({
|
|
|
2301
2305
|
};
|
|
2302
2306
|
const renderCheckboxItem = (item, categoryKey) => {
|
|
2303
2307
|
const uniqueId = `${categoryKey}-${item.id}`;
|
|
2304
|
-
return /* @__PURE__ */ jsxs9(
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
/* @__PURE__ */ jsx14(
|
|
2323
|
-
"label",
|
|
2324
|
-
{
|
|
2325
|
-
htmlFor: uniqueId,
|
|
2326
|
-
className: "text-sm text-text-950 cursor-pointer select-none",
|
|
2327
|
-
children: item.name
|
|
2328
|
-
}
|
|
2329
|
-
)
|
|
2330
|
-
]
|
|
2331
|
-
},
|
|
2332
|
-
item.id
|
|
2333
|
-
);
|
|
2308
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3 px-2", children: [
|
|
2309
|
+
/* @__PURE__ */ jsx14(
|
|
2310
|
+
CheckBox_default,
|
|
2311
|
+
{
|
|
2312
|
+
id: uniqueId,
|
|
2313
|
+
checked: isCheckBoxIsSelected(categoryKey, item.id),
|
|
2314
|
+
onChange: () => toggleItem(categoryKey, item.id)
|
|
2315
|
+
}
|
|
2316
|
+
),
|
|
2317
|
+
/* @__PURE__ */ jsx14(
|
|
2318
|
+
"label",
|
|
2319
|
+
{
|
|
2320
|
+
htmlFor: uniqueId,
|
|
2321
|
+
className: "text-sm text-text-950 cursor-pointer select-none",
|
|
2322
|
+
children: item.name
|
|
2323
|
+
}
|
|
2324
|
+
)
|
|
2325
|
+
] }, item.id);
|
|
2334
2326
|
};
|
|
2335
2327
|
const renderFormattedGroup = (formattedGroup, idx, categoryKey) => /* @__PURE__ */ jsxs9(
|
|
2336
2328
|
"div",
|
|
@@ -25696,9 +25688,8 @@ var GoalPageTab = /* @__PURE__ */ ((GoalPageTab2) => {
|
|
|
25696
25688
|
GoalPageTab2["MODELS"] = "models";
|
|
25697
25689
|
return GoalPageTab2;
|
|
25698
25690
|
})(GoalPageTab || {});
|
|
25699
|
-
var isNonEmptyArray = (param) => Array.isArray(param) && param.length > 0;
|
|
25700
25691
|
var extractFilterValue = (param) => {
|
|
25701
|
-
if (!
|
|
25692
|
+
if (!Array.isArray(param) || param.length === 0) return {};
|
|
25702
25693
|
return param.length === 1 ? { single: param[0] } : { multiple: param };
|
|
25703
25694
|
};
|
|
25704
25695
|
var buildFiltersFromParams = (params) => {
|
|
@@ -25709,7 +25700,7 @@ var buildFiltersFromParams = (params) => {
|
|
|
25709
25700
|
if (params.search) {
|
|
25710
25701
|
filters.search = params.search;
|
|
25711
25702
|
}
|
|
25712
|
-
if (
|
|
25703
|
+
if (Array.isArray(params.status) && params.status.length > 0) {
|
|
25713
25704
|
filters.status = params.status[0];
|
|
25714
25705
|
}
|
|
25715
25706
|
const schoolFilter = extractFilterValue(params.school);
|
|
@@ -25718,10 +25709,10 @@ var buildFiltersFromParams = (params) => {
|
|
|
25718
25709
|
const classFilter = extractFilterValue(params.class);
|
|
25719
25710
|
if (classFilter.single) filters.classId = classFilter.single;
|
|
25720
25711
|
if (classFilter.multiple) filters.classIds = classFilter.multiple;
|
|
25721
|
-
if (
|
|
25712
|
+
if (Array.isArray(params.students) && params.students.length > 0) {
|
|
25722
25713
|
filters.studentIds = params.students;
|
|
25723
25714
|
}
|
|
25724
|
-
if (
|
|
25715
|
+
if (Array.isArray(params.subject) && params.subject.length > 0) {
|
|
25725
25716
|
filters.subjectId = params.subject[0];
|
|
25726
25717
|
}
|
|
25727
25718
|
if (params.startDate && typeof params.startDate === "string") {
|
|
@@ -26981,8 +26972,225 @@ var RecommendedLessonDetails = ({
|
|
|
26981
26972
|
};
|
|
26982
26973
|
var RecommendedLessonDetails_default = RecommendedLessonDetails;
|
|
26983
26974
|
|
|
26975
|
+
// src/hooks/useRecommendedLessonsPage.ts
|
|
26976
|
+
import { useCallback as useCallback29, useRef as useRef31, useMemo as useMemo29, useState as useState48 } from "react";
|
|
26977
|
+
var buildQueryParams2 = (filters) => {
|
|
26978
|
+
if (!filters) return {};
|
|
26979
|
+
const params = {};
|
|
26980
|
+
for (const key in filters) {
|
|
26981
|
+
const value = filters[key];
|
|
26982
|
+
if (value !== void 0 && value !== null) {
|
|
26983
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
26984
|
+
params[key] = value;
|
|
26985
|
+
}
|
|
26986
|
+
}
|
|
26987
|
+
}
|
|
26988
|
+
return params;
|
|
26989
|
+
};
|
|
26990
|
+
var getSchoolOptions2 = (userData) => {
|
|
26991
|
+
if (!userData?.userInstitutions) return [];
|
|
26992
|
+
const schoolMap = /* @__PURE__ */ new Map();
|
|
26993
|
+
userData.userInstitutions.forEach((inst) => {
|
|
26994
|
+
if (inst.school?.id && inst.school?.name) {
|
|
26995
|
+
schoolMap.set(inst.school.id, inst.school.name);
|
|
26996
|
+
}
|
|
26997
|
+
});
|
|
26998
|
+
return Array.from(schoolMap.entries()).map(([id, name]) => ({ id, name }));
|
|
26999
|
+
};
|
|
27000
|
+
var getClassOptions2 = (userData) => {
|
|
27001
|
+
if (!userData?.userInstitutions) return [];
|
|
27002
|
+
const classMap = /* @__PURE__ */ new Map();
|
|
27003
|
+
userData.userInstitutions.forEach((inst) => {
|
|
27004
|
+
if (inst.class?.id && inst.class?.name) {
|
|
27005
|
+
classMap.set(inst.class.id, inst.class.name);
|
|
27006
|
+
}
|
|
27007
|
+
});
|
|
27008
|
+
return Array.from(classMap.entries()).map(([id, name]) => ({ id, name }));
|
|
27009
|
+
};
|
|
27010
|
+
var getSubjectOptions3 = (userData) => {
|
|
27011
|
+
if (!userData?.subTeacherTopicClasses) return [];
|
|
27012
|
+
const subjectMap = /* @__PURE__ */ new Map();
|
|
27013
|
+
userData.subTeacherTopicClasses.forEach((stc) => {
|
|
27014
|
+
if (stc.subject?.id && stc.subject?.name) {
|
|
27015
|
+
subjectMap.set(stc.subject.id, stc.subject.name);
|
|
27016
|
+
}
|
|
27017
|
+
});
|
|
27018
|
+
return Array.from(subjectMap.entries()).map(([id, name]) => ({ id, name }));
|
|
27019
|
+
};
|
|
27020
|
+
var createUseRecommendedLessonsPage = (config) => {
|
|
27021
|
+
const {
|
|
27022
|
+
api,
|
|
27023
|
+
navigate,
|
|
27024
|
+
userData,
|
|
27025
|
+
paths,
|
|
27026
|
+
endpoints,
|
|
27027
|
+
texts,
|
|
27028
|
+
emptyStateImage,
|
|
27029
|
+
noSearchImage,
|
|
27030
|
+
mapSubjectNameToEnum: mapSubjectNameToEnum2
|
|
27031
|
+
} = config;
|
|
27032
|
+
return () => {
|
|
27033
|
+
const goalsMapRef = useRef31(/* @__PURE__ */ new Map());
|
|
27034
|
+
const [sendModalOpen, setSendModalOpen] = useState48(false);
|
|
27035
|
+
const [selectedModel, setSelectedModel] = useState48(null);
|
|
27036
|
+
const [sendModalLoading, setSendModalLoading] = useState48(false);
|
|
27037
|
+
const [sendModalCategories, setSendModalCategories] = useState48([]);
|
|
27038
|
+
const userFilterData = useMemo29(
|
|
27039
|
+
() => ({
|
|
27040
|
+
schools: getSchoolOptions2(userData),
|
|
27041
|
+
classes: getClassOptions2(userData),
|
|
27042
|
+
subjects: getSubjectOptions3(userData)
|
|
27043
|
+
}),
|
|
27044
|
+
[userData]
|
|
27045
|
+
);
|
|
27046
|
+
const subjectsMap = useMemo29(() => {
|
|
27047
|
+
const map = /* @__PURE__ */ new Map();
|
|
27048
|
+
const subjects = getSubjectOptions3(userData);
|
|
27049
|
+
subjects.forEach((s) => map.set(s.id, s.name));
|
|
27050
|
+
return map;
|
|
27051
|
+
}, [userData]);
|
|
27052
|
+
const fetchGoalsHistory = useCallback29(
|
|
27053
|
+
async (filters) => {
|
|
27054
|
+
const params = buildQueryParams2(filters);
|
|
27055
|
+
const response = await api.get(
|
|
27056
|
+
endpoints.goalsHistory,
|
|
27057
|
+
{ params }
|
|
27058
|
+
);
|
|
27059
|
+
const goals = response.data.data.goals;
|
|
27060
|
+
goals.forEach((goal) => {
|
|
27061
|
+
goalsMapRef.current.set(goal.goal.id, goal);
|
|
27062
|
+
});
|
|
27063
|
+
return response.data;
|
|
27064
|
+
},
|
|
27065
|
+
[api, endpoints.goalsHistory]
|
|
27066
|
+
);
|
|
27067
|
+
const fetchGoalModels = useCallback29(
|
|
27068
|
+
async (filters) => {
|
|
27069
|
+
const params = buildQueryParams2({
|
|
27070
|
+
...filters,
|
|
27071
|
+
type: "MODELO" /* MODELO */
|
|
27072
|
+
});
|
|
27073
|
+
const response = await api.get(
|
|
27074
|
+
endpoints.goalDrafts,
|
|
27075
|
+
{ params }
|
|
27076
|
+
);
|
|
27077
|
+
return response.data;
|
|
27078
|
+
},
|
|
27079
|
+
[api, endpoints.goalDrafts]
|
|
27080
|
+
);
|
|
27081
|
+
const deleteGoalModel = useCallback29(
|
|
27082
|
+
async (id) => {
|
|
27083
|
+
await api.delete(`${endpoints.goalDrafts}/${id}`);
|
|
27084
|
+
},
|
|
27085
|
+
[api, endpoints.goalDrafts]
|
|
27086
|
+
);
|
|
27087
|
+
const handleCreateLesson = useCallback29(() => {
|
|
27088
|
+
navigate(paths.createLesson);
|
|
27089
|
+
}, []);
|
|
27090
|
+
const handleCreateModel = useCallback29(() => {
|
|
27091
|
+
navigate(paths.createModel);
|
|
27092
|
+
}, []);
|
|
27093
|
+
const handleRowClick = useCallback29((row) => {
|
|
27094
|
+
const originalData = goalsMapRef.current.get(row.id);
|
|
27095
|
+
navigate(`${paths.lessonDetails}/${row.id}`, {
|
|
27096
|
+
state: { goalData: originalData }
|
|
27097
|
+
});
|
|
27098
|
+
}, []);
|
|
27099
|
+
const handleEditGoal = useCallback29((id) => {
|
|
27100
|
+
navigate(`${paths.editLesson}/${id}/editar`);
|
|
27101
|
+
}, []);
|
|
27102
|
+
const handleEditModel = useCallback29((model) => {
|
|
27103
|
+
navigate(`${paths.editModel}${model.id}`);
|
|
27104
|
+
}, []);
|
|
27105
|
+
const handleSendLesson = useCallback29(
|
|
27106
|
+
(model) => {
|
|
27107
|
+
setSelectedModel(model);
|
|
27108
|
+
const classes = getClassOptions2(userData);
|
|
27109
|
+
const categories = [];
|
|
27110
|
+
if (classes.length > 0) {
|
|
27111
|
+
categories.push({
|
|
27112
|
+
key: "students",
|
|
27113
|
+
label: "Turmas",
|
|
27114
|
+
selectedIds: [],
|
|
27115
|
+
itens: classes.map((cls) => ({
|
|
27116
|
+
id: cls.id,
|
|
27117
|
+
name: cls.name,
|
|
27118
|
+
studentId: cls.id,
|
|
27119
|
+
userInstitutionId: cls.id
|
|
27120
|
+
}))
|
|
27121
|
+
});
|
|
27122
|
+
}
|
|
27123
|
+
setSendModalCategories(categories);
|
|
27124
|
+
setSendModalOpen(true);
|
|
27125
|
+
},
|
|
27126
|
+
[userData]
|
|
27127
|
+
);
|
|
27128
|
+
const handleSendLessonSubmit = useCallback29(
|
|
27129
|
+
async (formData) => {
|
|
27130
|
+
if (!selectedModel) return;
|
|
27131
|
+
setSendModalLoading(true);
|
|
27132
|
+
try {
|
|
27133
|
+
await api.post(endpoints.submitGoal, {
|
|
27134
|
+
draftId: selectedModel.id,
|
|
27135
|
+
students: formData.students,
|
|
27136
|
+
startDate: `${formData.startDate}T${formData.startTime}:00`,
|
|
27137
|
+
finalDate: `${formData.finalDate}T${formData.finalTime}:00`
|
|
27138
|
+
});
|
|
27139
|
+
setSendModalOpen(false);
|
|
27140
|
+
setSelectedModel(null);
|
|
27141
|
+
} finally {
|
|
27142
|
+
setSendModalLoading(false);
|
|
27143
|
+
}
|
|
27144
|
+
},
|
|
27145
|
+
[api, endpoints.submitGoal, selectedModel]
|
|
27146
|
+
);
|
|
27147
|
+
const handleSendModalClose = useCallback29(() => {
|
|
27148
|
+
setSendModalOpen(false);
|
|
27149
|
+
setSelectedModel(null);
|
|
27150
|
+
}, []);
|
|
27151
|
+
const handleCategoriesChange = useCallback29(
|
|
27152
|
+
(categories) => {
|
|
27153
|
+
setSendModalCategories(categories);
|
|
27154
|
+
},
|
|
27155
|
+
[]
|
|
27156
|
+
);
|
|
27157
|
+
return {
|
|
27158
|
+
historyProps: {
|
|
27159
|
+
fetchGoalsHistory,
|
|
27160
|
+
fetchGoalModels,
|
|
27161
|
+
deleteGoalModel,
|
|
27162
|
+
onCreateLesson: handleCreateLesson,
|
|
27163
|
+
onCreateModel: handleCreateModel,
|
|
27164
|
+
onRowClick: handleRowClick,
|
|
27165
|
+
onEditGoal: handleEditGoal,
|
|
27166
|
+
onEditModel: handleEditModel,
|
|
27167
|
+
onSendLesson: handleSendLesson,
|
|
27168
|
+
emptyStateImage,
|
|
27169
|
+
noSearchImage,
|
|
27170
|
+
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
27171
|
+
userFilterData,
|
|
27172
|
+
subjectsMap,
|
|
27173
|
+
title: texts.title,
|
|
27174
|
+
createButtonText: texts.createButtonText,
|
|
27175
|
+
searchPlaceholder: texts.searchPlaceholder
|
|
27176
|
+
},
|
|
27177
|
+
modalProps: {
|
|
27178
|
+
isOpen: sendModalOpen,
|
|
27179
|
+
onClose: handleSendModalClose,
|
|
27180
|
+
onSubmit: handleSendLessonSubmit,
|
|
27181
|
+
categories: sendModalCategories,
|
|
27182
|
+
onCategoriesChange: handleCategoriesChange,
|
|
27183
|
+
isLoading: sendModalLoading,
|
|
27184
|
+
modalTitle: selectedModel?.title
|
|
27185
|
+
},
|
|
27186
|
+
navigate
|
|
27187
|
+
};
|
|
27188
|
+
};
|
|
27189
|
+
};
|
|
27190
|
+
var createRecommendedLessonsPageHook = createUseRecommendedLessonsPage;
|
|
27191
|
+
|
|
26984
27192
|
// src/hooks/useRecommendedLessonDetails.ts
|
|
26985
|
-
import { useState as
|
|
27193
|
+
import { useState as useState49, useCallback as useCallback30, useEffect as useEffect49 } from "react";
|
|
26986
27194
|
import { z as z7 } from "zod";
|
|
26987
27195
|
var goalLessonSubjectSchema = z7.object({
|
|
26988
27196
|
id: z7.string(),
|
|
@@ -27085,12 +27293,12 @@ var handleLessonDetailsFetchError = (error) => {
|
|
|
27085
27293
|
};
|
|
27086
27294
|
var createUseRecommendedLessonDetails = (apiClient) => {
|
|
27087
27295
|
return (lessonId) => {
|
|
27088
|
-
const [state, setState] =
|
|
27296
|
+
const [state, setState] = useState49({
|
|
27089
27297
|
data: null,
|
|
27090
27298
|
loading: true,
|
|
27091
27299
|
error: null
|
|
27092
27300
|
});
|
|
27093
|
-
const fetchLessonDetails =
|
|
27301
|
+
const fetchLessonDetails = useCallback30(async () => {
|
|
27094
27302
|
if (!lessonId) {
|
|
27095
27303
|
setState({
|
|
27096
27304
|
data: null,
|
|
@@ -27148,10 +27356,10 @@ var createUseRecommendedLessonDetails = (apiClient) => {
|
|
|
27148
27356
|
var createRecommendedLessonDetailsHook = createUseRecommendedLessonDetails;
|
|
27149
27357
|
|
|
27150
27358
|
// src/components/ActivitiesHistory/ActivitiesHistory.tsx
|
|
27151
|
-
import { useState as
|
|
27359
|
+
import { useState as useState52 } from "react";
|
|
27152
27360
|
|
|
27153
27361
|
// src/components/ActivitiesHistory/tabs/HistoryTab.tsx
|
|
27154
|
-
import { useCallback as
|
|
27362
|
+
import { useCallback as useCallback32, useMemo as useMemo30, useRef as useRef32 } from "react";
|
|
27155
27363
|
import { Plus as Plus5 } from "phosphor-react";
|
|
27156
27364
|
|
|
27157
27365
|
// src/components/ActivitiesHistory/config/historyTableColumns.tsx
|
|
@@ -27165,7 +27373,6 @@ var renderTruncatedText = (value) => {
|
|
|
27165
27373
|
};
|
|
27166
27374
|
|
|
27167
27375
|
// src/components/ActivitiesHistory/utils/filterBuilders.ts
|
|
27168
|
-
var isNonEmptyArray2 = (param) => Array.isArray(param) && param.length > 0;
|
|
27169
27376
|
var isValidApiStatus = (value) => Object.values(GenericApiStatus).includes(value);
|
|
27170
27377
|
var buildHistoryFiltersFromParams = (params) => {
|
|
27171
27378
|
const filters = {
|
|
@@ -27175,13 +27382,13 @@ var buildHistoryFiltersFromParams = (params) => {
|
|
|
27175
27382
|
if (params.search) {
|
|
27176
27383
|
filters.search = params.search;
|
|
27177
27384
|
}
|
|
27178
|
-
if (
|
|
27385
|
+
if (Array.isArray(params.status) && params.status.length > 0 && isValidApiStatus(params.status[0])) {
|
|
27179
27386
|
filters.status = params.status[0];
|
|
27180
27387
|
}
|
|
27181
|
-
if (
|
|
27388
|
+
if (Array.isArray(params.school) && params.school.length > 0) {
|
|
27182
27389
|
filters.schoolId = params.school[0];
|
|
27183
27390
|
}
|
|
27184
|
-
if (
|
|
27391
|
+
if (Array.isArray(params.subject) && params.subject.length > 0) {
|
|
27185
27392
|
filters.subjectId = params.subject[0];
|
|
27186
27393
|
}
|
|
27187
27394
|
return filters;
|
|
@@ -27194,21 +27401,21 @@ var buildModelsFiltersFromParams = (params) => {
|
|
|
27194
27401
|
if (params.search) {
|
|
27195
27402
|
filters.search = params.search;
|
|
27196
27403
|
}
|
|
27197
|
-
if (
|
|
27404
|
+
if (Array.isArray(params.subject) && params.subject.length > 0) {
|
|
27198
27405
|
filters.subjectId = params.subject[0];
|
|
27199
27406
|
}
|
|
27200
27407
|
return filters;
|
|
27201
27408
|
};
|
|
27202
27409
|
|
|
27203
27410
|
// src/components/ActivitiesHistory/utils/filterOptions.ts
|
|
27204
|
-
var
|
|
27411
|
+
var getSchoolOptions3 = (data) => {
|
|
27205
27412
|
if (!data?.schools) return [];
|
|
27206
27413
|
return data.schools.map((school) => ({
|
|
27207
27414
|
id: school.id,
|
|
27208
27415
|
name: school.name
|
|
27209
27416
|
}));
|
|
27210
27417
|
};
|
|
27211
|
-
var
|
|
27418
|
+
var getSubjectOptions4 = (data) => {
|
|
27212
27419
|
if (!data?.subjects) return [];
|
|
27213
27420
|
return data.subjects.map((subject) => ({
|
|
27214
27421
|
id: subject.id,
|
|
@@ -27344,7 +27551,7 @@ var createHistoryFiltersConfig = (userData) => [
|
|
|
27344
27551
|
key: "school",
|
|
27345
27552
|
label: "Escola",
|
|
27346
27553
|
selectedIds: [],
|
|
27347
|
-
itens:
|
|
27554
|
+
itens: getSchoolOptions3(userData)
|
|
27348
27555
|
}
|
|
27349
27556
|
]
|
|
27350
27557
|
},
|
|
@@ -27356,14 +27563,14 @@ var createHistoryFiltersConfig = (userData) => [
|
|
|
27356
27563
|
key: "subject",
|
|
27357
27564
|
label: "Mat\xE9ria",
|
|
27358
27565
|
selectedIds: [],
|
|
27359
|
-
itens:
|
|
27566
|
+
itens: getSubjectOptions4(userData)
|
|
27360
27567
|
}
|
|
27361
27568
|
]
|
|
27362
27569
|
}
|
|
27363
27570
|
];
|
|
27364
27571
|
|
|
27365
27572
|
// src/hooks/useActivitiesHistory.ts
|
|
27366
|
-
import { useState as
|
|
27573
|
+
import { useState as useState50, useCallback as useCallback31 } from "react";
|
|
27367
27574
|
import { z as z8 } from "zod";
|
|
27368
27575
|
import dayjs5 from "dayjs";
|
|
27369
27576
|
var activityHistoryResponseSchema = z8.object({
|
|
@@ -27422,13 +27629,13 @@ var handleActivityFetchError = createFetchErrorHandler(
|
|
|
27422
27629
|
);
|
|
27423
27630
|
var createUseActivitiesHistory = (fetchActivitiesHistory) => {
|
|
27424
27631
|
return () => {
|
|
27425
|
-
const [state, setState] =
|
|
27632
|
+
const [state, setState] = useState50({
|
|
27426
27633
|
activities: [],
|
|
27427
27634
|
loading: false,
|
|
27428
27635
|
error: null,
|
|
27429
27636
|
pagination: DEFAULT_ACTIVITIES_PAGINATION
|
|
27430
27637
|
});
|
|
27431
|
-
const fetchActivities =
|
|
27638
|
+
const fetchActivities = useCallback31(
|
|
27432
27639
|
async (filters) => {
|
|
27433
27640
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
27434
27641
|
try {
|
|
@@ -27473,9 +27680,9 @@ var HistoryTab = ({
|
|
|
27473
27680
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
27474
27681
|
userFilterData
|
|
27475
27682
|
}) => {
|
|
27476
|
-
const fetchActivitiesHistoryRef =
|
|
27683
|
+
const fetchActivitiesHistoryRef = useRef32(fetchActivitiesHistory);
|
|
27477
27684
|
fetchActivitiesHistoryRef.current = fetchActivitiesHistory;
|
|
27478
|
-
const useActivitiesHistory =
|
|
27685
|
+
const useActivitiesHistory = useMemo30(
|
|
27479
27686
|
() => createUseActivitiesHistory(
|
|
27480
27687
|
(filters) => fetchActivitiesHistoryRef.current(filters)
|
|
27481
27688
|
),
|
|
@@ -27488,15 +27695,15 @@ var HistoryTab = ({
|
|
|
27488
27695
|
pagination,
|
|
27489
27696
|
fetchActivities
|
|
27490
27697
|
} = useActivitiesHistory();
|
|
27491
|
-
const historyFilterConfigs =
|
|
27698
|
+
const historyFilterConfigs = useMemo30(
|
|
27492
27699
|
() => createHistoryFiltersConfig(userFilterData),
|
|
27493
27700
|
[userFilterData]
|
|
27494
27701
|
);
|
|
27495
|
-
const historyTableColumns =
|
|
27702
|
+
const historyTableColumns = useMemo30(
|
|
27496
27703
|
() => createHistoryTableColumns(mapSubjectNameToEnum2),
|
|
27497
27704
|
[mapSubjectNameToEnum2]
|
|
27498
27705
|
);
|
|
27499
|
-
const handleParamsChange =
|
|
27706
|
+
const handleParamsChange = useCallback32(
|
|
27500
27707
|
(params) => {
|
|
27501
27708
|
const filters = buildHistoryFiltersFromParams(params);
|
|
27502
27709
|
fetchActivities(filters);
|
|
@@ -27588,14 +27795,14 @@ var createModelsFiltersConfig = (userData) => [
|
|
|
27588
27795
|
key: "subject",
|
|
27589
27796
|
label: "Mat\xE9ria",
|
|
27590
27797
|
selectedIds: [],
|
|
27591
|
-
itens:
|
|
27798
|
+
itens: getSubjectOptions4(userData)
|
|
27592
27799
|
}
|
|
27593
27800
|
]
|
|
27594
27801
|
}
|
|
27595
27802
|
];
|
|
27596
27803
|
|
|
27597
27804
|
// src/hooks/useActivityModels.ts
|
|
27598
|
-
import { useState as
|
|
27805
|
+
import { useState as useState51, useCallback as useCallback33 } from "react";
|
|
27599
27806
|
import { z as z9 } from "zod";
|
|
27600
27807
|
import dayjs6 from "dayjs";
|
|
27601
27808
|
var activityDraftFiltersSchema = z9.object({
|
|
@@ -27645,13 +27852,13 @@ var handleModelFetchError = createFetchErrorHandler(
|
|
|
27645
27852
|
);
|
|
27646
27853
|
var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
27647
27854
|
return () => {
|
|
27648
|
-
const [state, setState] =
|
|
27855
|
+
const [state, setState] = useState51({
|
|
27649
27856
|
models: [],
|
|
27650
27857
|
loading: false,
|
|
27651
27858
|
error: null,
|
|
27652
27859
|
pagination: DEFAULT_MODELS_PAGINATION
|
|
27653
27860
|
});
|
|
27654
|
-
const fetchModels =
|
|
27861
|
+
const fetchModels = useCallback33(
|
|
27655
27862
|
async (filters, subjectsMap) => {
|
|
27656
27863
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
27657
27864
|
try {
|
|
@@ -27686,7 +27893,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
|
27686
27893
|
},
|
|
27687
27894
|
[fetchActivityModels]
|
|
27688
27895
|
);
|
|
27689
|
-
const deleteModel =
|
|
27896
|
+
const deleteModel = useCallback33(
|
|
27690
27897
|
async (id) => {
|
|
27691
27898
|
try {
|
|
27692
27899
|
await deleteActivityModel(id);
|
|
@@ -27789,7 +27996,7 @@ var ActivitiesHistory = ({
|
|
|
27789
27996
|
userFilterData,
|
|
27790
27997
|
subjectsMap
|
|
27791
27998
|
}) => {
|
|
27792
|
-
const [activeTab, setActiveTab] =
|
|
27999
|
+
const [activeTab, setActiveTab] = useState52("history" /* HISTORY */);
|
|
27793
28000
|
return /* @__PURE__ */ jsxs97(
|
|
27794
28001
|
"div",
|
|
27795
28002
|
{
|
|
@@ -28028,7 +28235,7 @@ var buildUserFilterData = (userData) => ({
|
|
|
28028
28235
|
});
|
|
28029
28236
|
|
|
28030
28237
|
// src/hooks/useChat.ts
|
|
28031
|
-
import { useState as
|
|
28238
|
+
import { useState as useState53, useEffect as useEffect50, useCallback as useCallback34, useRef as useRef33 } from "react";
|
|
28032
28239
|
var WS_STATES = {
|
|
28033
28240
|
CONNECTING: 0,
|
|
28034
28241
|
OPEN: 1,
|
|
@@ -28047,25 +28254,25 @@ function useChat({
|
|
|
28047
28254
|
reconnectInterval = 3e3,
|
|
28048
28255
|
maxReconnectAttempts = 5
|
|
28049
28256
|
}) {
|
|
28050
|
-
const [isConnected, setIsConnected] =
|
|
28051
|
-
const [messages, setMessages] =
|
|
28052
|
-
const [participants, setParticipants] =
|
|
28053
|
-
const [error, setError] =
|
|
28054
|
-
const wsRef =
|
|
28055
|
-
const reconnectAttemptsRef =
|
|
28056
|
-
const reconnectTimeoutRef =
|
|
28257
|
+
const [isConnected, setIsConnected] = useState53(false);
|
|
28258
|
+
const [messages, setMessages] = useState53([]);
|
|
28259
|
+
const [participants, setParticipants] = useState53([]);
|
|
28260
|
+
const [error, setError] = useState53(null);
|
|
28261
|
+
const wsRef = useRef33(null);
|
|
28262
|
+
const reconnectAttemptsRef = useRef33(0);
|
|
28263
|
+
const reconnectTimeoutRef = useRef33(
|
|
28057
28264
|
null
|
|
28058
28265
|
);
|
|
28059
|
-
const isManualDisconnectRef =
|
|
28060
|
-
const isConnectingRef =
|
|
28061
|
-
const connectRef =
|
|
28266
|
+
const isManualDisconnectRef = useRef33(false);
|
|
28267
|
+
const isConnectingRef = useRef33(false);
|
|
28268
|
+
const connectRef = useRef33(() => {
|
|
28062
28269
|
});
|
|
28063
|
-
const sendWsMessage =
|
|
28270
|
+
const sendWsMessage = useCallback34((message) => {
|
|
28064
28271
|
if (wsRef.current?.readyState === WS_STATES.OPEN) {
|
|
28065
28272
|
wsRef.current.send(JSON.stringify(message));
|
|
28066
28273
|
}
|
|
28067
28274
|
}, []);
|
|
28068
|
-
const sendMessage =
|
|
28275
|
+
const sendMessage = useCallback34(
|
|
28069
28276
|
(content) => {
|
|
28070
28277
|
const trimmedContent = content.trim();
|
|
28071
28278
|
if (!trimmedContent) return;
|
|
@@ -28076,12 +28283,12 @@ function useChat({
|
|
|
28076
28283
|
},
|
|
28077
28284
|
[sendWsMessage]
|
|
28078
28285
|
);
|
|
28079
|
-
const leave =
|
|
28286
|
+
const leave = useCallback34(() => {
|
|
28080
28287
|
isManualDisconnectRef.current = true;
|
|
28081
28288
|
sendWsMessage({ type: "leave" });
|
|
28082
28289
|
wsRef.current?.close(1e3, "User left");
|
|
28083
28290
|
}, [sendWsMessage]);
|
|
28084
|
-
const handleMessage =
|
|
28291
|
+
const handleMessage = useCallback34(
|
|
28085
28292
|
(event) => {
|
|
28086
28293
|
try {
|
|
28087
28294
|
const data = JSON.parse(event.data);
|
|
@@ -28149,7 +28356,7 @@ function useChat({
|
|
|
28149
28356
|
},
|
|
28150
28357
|
[onError]
|
|
28151
28358
|
);
|
|
28152
|
-
const connect =
|
|
28359
|
+
const connect = useCallback34(() => {
|
|
28153
28360
|
if (isConnectingRef.current) {
|
|
28154
28361
|
return;
|
|
28155
28362
|
}
|
|
@@ -28203,7 +28410,7 @@ function useChat({
|
|
|
28203
28410
|
maxReconnectAttempts
|
|
28204
28411
|
]);
|
|
28205
28412
|
connectRef.current = connect;
|
|
28206
|
-
const reconnect =
|
|
28413
|
+
const reconnect = useCallback34(() => {
|
|
28207
28414
|
isManualDisconnectRef.current = false;
|
|
28208
28415
|
reconnectAttemptsRef.current = 0;
|
|
28209
28416
|
connectRef.current();
|
|
@@ -28252,15 +28459,15 @@ function createUseChat(baseWsUrl) {
|
|
|
28252
28459
|
}
|
|
28253
28460
|
|
|
28254
28461
|
// src/hooks/useChatRooms.ts
|
|
28255
|
-
import { useState as
|
|
28462
|
+
import { useState as useState54, useCallback as useCallback35 } from "react";
|
|
28256
28463
|
function useChatRooms({
|
|
28257
28464
|
apiClient
|
|
28258
28465
|
}) {
|
|
28259
|
-
const [rooms, setRooms] =
|
|
28260
|
-
const [availableUsers, setAvailableUsers] =
|
|
28261
|
-
const [loading, setLoading] =
|
|
28262
|
-
const [error, setError] =
|
|
28263
|
-
const fetchRooms =
|
|
28466
|
+
const [rooms, setRooms] = useState54([]);
|
|
28467
|
+
const [availableUsers, setAvailableUsers] = useState54([]);
|
|
28468
|
+
const [loading, setLoading] = useState54(false);
|
|
28469
|
+
const [error, setError] = useState54(null);
|
|
28470
|
+
const fetchRooms = useCallback35(async () => {
|
|
28264
28471
|
setLoading(true);
|
|
28265
28472
|
setError(null);
|
|
28266
28473
|
try {
|
|
@@ -28276,7 +28483,7 @@ function useChatRooms({
|
|
|
28276
28483
|
setLoading(false);
|
|
28277
28484
|
}
|
|
28278
28485
|
}, [apiClient]);
|
|
28279
|
-
const fetchAvailableUsers =
|
|
28486
|
+
const fetchAvailableUsers = useCallback35(async () => {
|
|
28280
28487
|
setLoading(true);
|
|
28281
28488
|
setError(null);
|
|
28282
28489
|
try {
|
|
@@ -28292,7 +28499,7 @@ function useChatRooms({
|
|
|
28292
28499
|
setLoading(false);
|
|
28293
28500
|
}
|
|
28294
28501
|
}, [apiClient]);
|
|
28295
|
-
const createRoom =
|
|
28502
|
+
const createRoom = useCallback35(
|
|
28296
28503
|
async (participantIds) => {
|
|
28297
28504
|
setLoading(true);
|
|
28298
28505
|
setError(null);
|
|
@@ -28316,7 +28523,7 @@ function useChatRooms({
|
|
|
28316
28523
|
},
|
|
28317
28524
|
[apiClient, fetchRooms]
|
|
28318
28525
|
);
|
|
28319
|
-
const clearError =
|
|
28526
|
+
const clearError = useCallback35(() => {
|
|
28320
28527
|
setError(null);
|
|
28321
28528
|
}, []);
|
|
28322
28529
|
return {
|
|
@@ -28350,7 +28557,7 @@ var CHAT_MESSAGE_TYPES = {
|
|
|
28350
28557
|
};
|
|
28351
28558
|
|
|
28352
28559
|
// src/components/Chat/Chat.tsx
|
|
28353
|
-
import { useState as
|
|
28560
|
+
import { useState as useState55, useEffect as useEffect51, useCallback as useCallback36, useRef as useRef34 } from "react";
|
|
28354
28561
|
import {
|
|
28355
28562
|
PaperPlaneTiltIcon as PaperPlaneTiltIcon2,
|
|
28356
28563
|
XIcon,
|
|
@@ -28503,16 +28710,16 @@ function ChatContent({
|
|
|
28503
28710
|
onRoomChange,
|
|
28504
28711
|
onBackToList
|
|
28505
28712
|
}) {
|
|
28506
|
-
const [view, setView] =
|
|
28507
|
-
const [selectedRoom, setSelectedRoom] =
|
|
28713
|
+
const [view, setView] = useState55("list");
|
|
28714
|
+
const [selectedRoom, setSelectedRoom] = useState55(
|
|
28508
28715
|
null
|
|
28509
28716
|
);
|
|
28510
|
-
const [selectedUserIds, setSelectedUserIds] =
|
|
28717
|
+
const [selectedUserIds, setSelectedUserIds] = useState55(
|
|
28511
28718
|
/* @__PURE__ */ new Set()
|
|
28512
28719
|
);
|
|
28513
|
-
const [messageInput, setMessageInput] =
|
|
28514
|
-
const [showCreateModal, setShowCreateModal] =
|
|
28515
|
-
const hasHandledInitialRoomRef =
|
|
28720
|
+
const [messageInput, setMessageInput] = useState55("");
|
|
28721
|
+
const [showCreateModal, setShowCreateModal] = useState55(false);
|
|
28722
|
+
const hasHandledInitialRoomRef = useRef34(false);
|
|
28516
28723
|
const {
|
|
28517
28724
|
rooms,
|
|
28518
28725
|
availableUsers,
|
|
@@ -28565,7 +28772,7 @@ function ChatContent({
|
|
|
28565
28772
|
onBackToList?.();
|
|
28566
28773
|
}
|
|
28567
28774
|
}, [initialRoomId, rooms, roomsLoading, onBackToList]);
|
|
28568
|
-
const handleSelectRoom =
|
|
28775
|
+
const handleSelectRoom = useCallback36(
|
|
28569
28776
|
(room) => {
|
|
28570
28777
|
setSelectedRoom(room);
|
|
28571
28778
|
setView("room");
|
|
@@ -28573,12 +28780,12 @@ function ChatContent({
|
|
|
28573
28780
|
},
|
|
28574
28781
|
[onRoomChange]
|
|
28575
28782
|
);
|
|
28576
|
-
const handleOpenCreateModal =
|
|
28783
|
+
const handleOpenCreateModal = useCallback36(async () => {
|
|
28577
28784
|
await fetchAvailableUsers();
|
|
28578
28785
|
setSelectedUserIds(/* @__PURE__ */ new Set());
|
|
28579
28786
|
setShowCreateModal(true);
|
|
28580
28787
|
}, [fetchAvailableUsers]);
|
|
28581
|
-
const handleToggleUser =
|
|
28788
|
+
const handleToggleUser = useCallback36((id) => {
|
|
28582
28789
|
setSelectedUserIds((prev) => {
|
|
28583
28790
|
const next = new Set(prev);
|
|
28584
28791
|
if (next.has(id)) {
|
|
@@ -28589,7 +28796,7 @@ function ChatContent({
|
|
|
28589
28796
|
return next;
|
|
28590
28797
|
});
|
|
28591
28798
|
}, []);
|
|
28592
|
-
const handleCreateRoom =
|
|
28799
|
+
const handleCreateRoom = useCallback36(async () => {
|
|
28593
28800
|
if (selectedUserIds.size === 0) return;
|
|
28594
28801
|
const room = await createRoom(Array.from(selectedUserIds));
|
|
28595
28802
|
if (room) {
|
|
@@ -28598,12 +28805,12 @@ function ChatContent({
|
|
|
28598
28805
|
onRoomChange?.(room.id);
|
|
28599
28806
|
}
|
|
28600
28807
|
}, [selectedUserIds, createRoom, onRoomChange]);
|
|
28601
|
-
const handleSendMessage =
|
|
28808
|
+
const handleSendMessage = useCallback36(() => {
|
|
28602
28809
|
if (!messageInput.trim()) return;
|
|
28603
28810
|
sendMessage(messageInput);
|
|
28604
28811
|
setMessageInput("");
|
|
28605
28812
|
}, [messageInput, sendMessage]);
|
|
28606
|
-
const handleBackToList =
|
|
28813
|
+
const handleBackToList = useCallback36(() => {
|
|
28607
28814
|
setSelectedRoom(null);
|
|
28608
28815
|
setView("list");
|
|
28609
28816
|
onBackToList?.();
|
|
@@ -28849,7 +29056,7 @@ var CalendarActivityStatus = /* @__PURE__ */ ((CalendarActivityStatus2) => {
|
|
|
28849
29056
|
})(CalendarActivityStatus || {});
|
|
28850
29057
|
|
|
28851
29058
|
// src/hooks/useSendActivity.ts
|
|
28852
|
-
import { useState as
|
|
29059
|
+
import { useState as useState56, useCallback as useCallback37, useMemo as useMemo31, useRef as useRef35 } from "react";
|
|
28853
29060
|
import dayjs7 from "dayjs";
|
|
28854
29061
|
function transformToCategoryConfig(data) {
|
|
28855
29062
|
return [
|
|
@@ -28879,7 +29086,7 @@ function transformToCategoryConfig(data) {
|
|
|
28879
29086
|
selectedIds: []
|
|
28880
29087
|
},
|
|
28881
29088
|
{
|
|
28882
|
-
key: "
|
|
29089
|
+
key: "students",
|
|
28883
29090
|
label: "Aluno",
|
|
28884
29091
|
dependsOn: ["escola", "serie", "turma"],
|
|
28885
29092
|
itens: data.students,
|
|
@@ -28904,21 +29111,21 @@ function useSendActivity(config) {
|
|
|
28904
29111
|
onSuccess,
|
|
28905
29112
|
onError
|
|
28906
29113
|
} = config;
|
|
28907
|
-
const [isOpen, setIsOpen] =
|
|
28908
|
-
const [selectedModel, setSelectedModel] =
|
|
29114
|
+
const [isOpen, setIsOpen] = useState56(false);
|
|
29115
|
+
const [selectedModel, setSelectedModel] = useState56(
|
|
28909
29116
|
null
|
|
28910
29117
|
);
|
|
28911
|
-
const [categories, setCategories] =
|
|
28912
|
-
const [isLoading, setIsLoading] =
|
|
28913
|
-
const [isCategoriesLoading, setIsCategoriesLoading] =
|
|
28914
|
-
const categoriesLoadedRef =
|
|
28915
|
-
const initialData =
|
|
29118
|
+
const [categories, setCategories] = useState56([]);
|
|
29119
|
+
const [isLoading, setIsLoading] = useState56(false);
|
|
29120
|
+
const [isCategoriesLoading, setIsCategoriesLoading] = useState56(false);
|
|
29121
|
+
const categoriesLoadedRef = useRef35(false);
|
|
29122
|
+
const initialData = useMemo31(() => {
|
|
28916
29123
|
if (!selectedModel) return void 0;
|
|
28917
29124
|
return {
|
|
28918
29125
|
title: selectedModel.title
|
|
28919
29126
|
};
|
|
28920
29127
|
}, [selectedModel]);
|
|
28921
|
-
const loadCategories =
|
|
29128
|
+
const loadCategories = useCallback37(async () => {
|
|
28922
29129
|
if (categoriesLoadedRef.current) return;
|
|
28923
29130
|
setIsCategoriesLoading(true);
|
|
28924
29131
|
try {
|
|
@@ -28933,7 +29140,7 @@ function useSendActivity(config) {
|
|
|
28933
29140
|
setIsCategoriesLoading(false);
|
|
28934
29141
|
}
|
|
28935
29142
|
}, [fetchCategories, onError]);
|
|
28936
|
-
const openModal =
|
|
29143
|
+
const openModal = useCallback37(
|
|
28937
29144
|
(model) => {
|
|
28938
29145
|
setSelectedModel(model);
|
|
28939
29146
|
setIsOpen(true);
|
|
@@ -28941,17 +29148,17 @@ function useSendActivity(config) {
|
|
|
28941
29148
|
},
|
|
28942
29149
|
[loadCategories]
|
|
28943
29150
|
);
|
|
28944
|
-
const closeModal =
|
|
29151
|
+
const closeModal = useCallback37(() => {
|
|
28945
29152
|
setIsOpen(false);
|
|
28946
29153
|
setSelectedModel(null);
|
|
28947
29154
|
}, []);
|
|
28948
|
-
const onCategoriesChange =
|
|
29155
|
+
const onCategoriesChange = useCallback37(
|
|
28949
29156
|
(updatedCategories) => {
|
|
28950
29157
|
setCategories(updatedCategories);
|
|
28951
29158
|
},
|
|
28952
29159
|
[]
|
|
28953
29160
|
);
|
|
28954
|
-
const handleSubmit =
|
|
29161
|
+
const handleSubmit = useCallback37(
|
|
28955
29162
|
async (data) => {
|
|
28956
29163
|
if (!selectedModel) return;
|
|
28957
29164
|
setIsLoading(true);
|
|
@@ -29207,6 +29414,7 @@ export {
|
|
|
29207
29414
|
createQuestionsListHook,
|
|
29208
29415
|
createRecommendedLessonDetailsHook,
|
|
29209
29416
|
createRecommendedLessonsHistoryHook,
|
|
29417
|
+
createRecommendedLessonsPageHook,
|
|
29210
29418
|
createUseActivitiesHistory,
|
|
29211
29419
|
createUseActivityFiltersData,
|
|
29212
29420
|
createUseActivityModels,
|
|
@@ -29218,6 +29426,7 @@ export {
|
|
|
29218
29426
|
createUseQuestionsList,
|
|
29219
29427
|
createUseRecommendedLessonDetails,
|
|
29220
29428
|
createUseRecommendedLessonsHistory,
|
|
29429
|
+
createUseRecommendedLessonsPage,
|
|
29221
29430
|
createZustandAuthAdapter,
|
|
29222
29431
|
deriveStudentStatus,
|
|
29223
29432
|
determineGoalStatus,
|