analytica-frontend-lib 1.2.82 → 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/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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +305 -84
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +294 -75
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -26972,8 +26972,225 @@ var RecommendedLessonDetails = ({
|
|
|
26972
26972
|
};
|
|
26973
26973
|
var RecommendedLessonDetails_default = RecommendedLessonDetails;
|
|
26974
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
|
+
|
|
26975
27192
|
// src/hooks/useRecommendedLessonDetails.ts
|
|
26976
|
-
import { useState as
|
|
27193
|
+
import { useState as useState49, useCallback as useCallback30, useEffect as useEffect49 } from "react";
|
|
26977
27194
|
import { z as z7 } from "zod";
|
|
26978
27195
|
var goalLessonSubjectSchema = z7.object({
|
|
26979
27196
|
id: z7.string(),
|
|
@@ -27076,12 +27293,12 @@ var handleLessonDetailsFetchError = (error) => {
|
|
|
27076
27293
|
};
|
|
27077
27294
|
var createUseRecommendedLessonDetails = (apiClient) => {
|
|
27078
27295
|
return (lessonId) => {
|
|
27079
|
-
const [state, setState] =
|
|
27296
|
+
const [state, setState] = useState49({
|
|
27080
27297
|
data: null,
|
|
27081
27298
|
loading: true,
|
|
27082
27299
|
error: null
|
|
27083
27300
|
});
|
|
27084
|
-
const fetchLessonDetails =
|
|
27301
|
+
const fetchLessonDetails = useCallback30(async () => {
|
|
27085
27302
|
if (!lessonId) {
|
|
27086
27303
|
setState({
|
|
27087
27304
|
data: null,
|
|
@@ -27139,10 +27356,10 @@ var createUseRecommendedLessonDetails = (apiClient) => {
|
|
|
27139
27356
|
var createRecommendedLessonDetailsHook = createUseRecommendedLessonDetails;
|
|
27140
27357
|
|
|
27141
27358
|
// src/components/ActivitiesHistory/ActivitiesHistory.tsx
|
|
27142
|
-
import { useState as
|
|
27359
|
+
import { useState as useState52 } from "react";
|
|
27143
27360
|
|
|
27144
27361
|
// src/components/ActivitiesHistory/tabs/HistoryTab.tsx
|
|
27145
|
-
import { useCallback as
|
|
27362
|
+
import { useCallback as useCallback32, useMemo as useMemo30, useRef as useRef32 } from "react";
|
|
27146
27363
|
import { Plus as Plus5 } from "phosphor-react";
|
|
27147
27364
|
|
|
27148
27365
|
// src/components/ActivitiesHistory/config/historyTableColumns.tsx
|
|
@@ -27191,14 +27408,14 @@ var buildModelsFiltersFromParams = (params) => {
|
|
|
27191
27408
|
};
|
|
27192
27409
|
|
|
27193
27410
|
// src/components/ActivitiesHistory/utils/filterOptions.ts
|
|
27194
|
-
var
|
|
27411
|
+
var getSchoolOptions3 = (data) => {
|
|
27195
27412
|
if (!data?.schools) return [];
|
|
27196
27413
|
return data.schools.map((school) => ({
|
|
27197
27414
|
id: school.id,
|
|
27198
27415
|
name: school.name
|
|
27199
27416
|
}));
|
|
27200
27417
|
};
|
|
27201
|
-
var
|
|
27418
|
+
var getSubjectOptions4 = (data) => {
|
|
27202
27419
|
if (!data?.subjects) return [];
|
|
27203
27420
|
return data.subjects.map((subject) => ({
|
|
27204
27421
|
id: subject.id,
|
|
@@ -27334,7 +27551,7 @@ var createHistoryFiltersConfig = (userData) => [
|
|
|
27334
27551
|
key: "school",
|
|
27335
27552
|
label: "Escola",
|
|
27336
27553
|
selectedIds: [],
|
|
27337
|
-
itens:
|
|
27554
|
+
itens: getSchoolOptions3(userData)
|
|
27338
27555
|
}
|
|
27339
27556
|
]
|
|
27340
27557
|
},
|
|
@@ -27346,14 +27563,14 @@ var createHistoryFiltersConfig = (userData) => [
|
|
|
27346
27563
|
key: "subject",
|
|
27347
27564
|
label: "Mat\xE9ria",
|
|
27348
27565
|
selectedIds: [],
|
|
27349
|
-
itens:
|
|
27566
|
+
itens: getSubjectOptions4(userData)
|
|
27350
27567
|
}
|
|
27351
27568
|
]
|
|
27352
27569
|
}
|
|
27353
27570
|
];
|
|
27354
27571
|
|
|
27355
27572
|
// src/hooks/useActivitiesHistory.ts
|
|
27356
|
-
import { useState as
|
|
27573
|
+
import { useState as useState50, useCallback as useCallback31 } from "react";
|
|
27357
27574
|
import { z as z8 } from "zod";
|
|
27358
27575
|
import dayjs5 from "dayjs";
|
|
27359
27576
|
var activityHistoryResponseSchema = z8.object({
|
|
@@ -27412,13 +27629,13 @@ var handleActivityFetchError = createFetchErrorHandler(
|
|
|
27412
27629
|
);
|
|
27413
27630
|
var createUseActivitiesHistory = (fetchActivitiesHistory) => {
|
|
27414
27631
|
return () => {
|
|
27415
|
-
const [state, setState] =
|
|
27632
|
+
const [state, setState] = useState50({
|
|
27416
27633
|
activities: [],
|
|
27417
27634
|
loading: false,
|
|
27418
27635
|
error: null,
|
|
27419
27636
|
pagination: DEFAULT_ACTIVITIES_PAGINATION
|
|
27420
27637
|
});
|
|
27421
|
-
const fetchActivities =
|
|
27638
|
+
const fetchActivities = useCallback31(
|
|
27422
27639
|
async (filters) => {
|
|
27423
27640
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
27424
27641
|
try {
|
|
@@ -27463,9 +27680,9 @@ var HistoryTab = ({
|
|
|
27463
27680
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
27464
27681
|
userFilterData
|
|
27465
27682
|
}) => {
|
|
27466
|
-
const fetchActivitiesHistoryRef =
|
|
27683
|
+
const fetchActivitiesHistoryRef = useRef32(fetchActivitiesHistory);
|
|
27467
27684
|
fetchActivitiesHistoryRef.current = fetchActivitiesHistory;
|
|
27468
|
-
const useActivitiesHistory =
|
|
27685
|
+
const useActivitiesHistory = useMemo30(
|
|
27469
27686
|
() => createUseActivitiesHistory(
|
|
27470
27687
|
(filters) => fetchActivitiesHistoryRef.current(filters)
|
|
27471
27688
|
),
|
|
@@ -27478,15 +27695,15 @@ var HistoryTab = ({
|
|
|
27478
27695
|
pagination,
|
|
27479
27696
|
fetchActivities
|
|
27480
27697
|
} = useActivitiesHistory();
|
|
27481
|
-
const historyFilterConfigs =
|
|
27698
|
+
const historyFilterConfigs = useMemo30(
|
|
27482
27699
|
() => createHistoryFiltersConfig(userFilterData),
|
|
27483
27700
|
[userFilterData]
|
|
27484
27701
|
);
|
|
27485
|
-
const historyTableColumns =
|
|
27702
|
+
const historyTableColumns = useMemo30(
|
|
27486
27703
|
() => createHistoryTableColumns(mapSubjectNameToEnum2),
|
|
27487
27704
|
[mapSubjectNameToEnum2]
|
|
27488
27705
|
);
|
|
27489
|
-
const handleParamsChange =
|
|
27706
|
+
const handleParamsChange = useCallback32(
|
|
27490
27707
|
(params) => {
|
|
27491
27708
|
const filters = buildHistoryFiltersFromParams(params);
|
|
27492
27709
|
fetchActivities(filters);
|
|
@@ -27578,14 +27795,14 @@ var createModelsFiltersConfig = (userData) => [
|
|
|
27578
27795
|
key: "subject",
|
|
27579
27796
|
label: "Mat\xE9ria",
|
|
27580
27797
|
selectedIds: [],
|
|
27581
|
-
itens:
|
|
27798
|
+
itens: getSubjectOptions4(userData)
|
|
27582
27799
|
}
|
|
27583
27800
|
]
|
|
27584
27801
|
}
|
|
27585
27802
|
];
|
|
27586
27803
|
|
|
27587
27804
|
// src/hooks/useActivityModels.ts
|
|
27588
|
-
import { useState as
|
|
27805
|
+
import { useState as useState51, useCallback as useCallback33 } from "react";
|
|
27589
27806
|
import { z as z9 } from "zod";
|
|
27590
27807
|
import dayjs6 from "dayjs";
|
|
27591
27808
|
var activityDraftFiltersSchema = z9.object({
|
|
@@ -27635,13 +27852,13 @@ var handleModelFetchError = createFetchErrorHandler(
|
|
|
27635
27852
|
);
|
|
27636
27853
|
var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
27637
27854
|
return () => {
|
|
27638
|
-
const [state, setState] =
|
|
27855
|
+
const [state, setState] = useState51({
|
|
27639
27856
|
models: [],
|
|
27640
27857
|
loading: false,
|
|
27641
27858
|
error: null,
|
|
27642
27859
|
pagination: DEFAULT_MODELS_PAGINATION
|
|
27643
27860
|
});
|
|
27644
|
-
const fetchModels =
|
|
27861
|
+
const fetchModels = useCallback33(
|
|
27645
27862
|
async (filters, subjectsMap) => {
|
|
27646
27863
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
27647
27864
|
try {
|
|
@@ -27676,7 +27893,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
|
27676
27893
|
},
|
|
27677
27894
|
[fetchActivityModels]
|
|
27678
27895
|
);
|
|
27679
|
-
const deleteModel =
|
|
27896
|
+
const deleteModel = useCallback33(
|
|
27680
27897
|
async (id) => {
|
|
27681
27898
|
try {
|
|
27682
27899
|
await deleteActivityModel(id);
|
|
@@ -27779,7 +27996,7 @@ var ActivitiesHistory = ({
|
|
|
27779
27996
|
userFilterData,
|
|
27780
27997
|
subjectsMap
|
|
27781
27998
|
}) => {
|
|
27782
|
-
const [activeTab, setActiveTab] =
|
|
27999
|
+
const [activeTab, setActiveTab] = useState52("history" /* HISTORY */);
|
|
27783
28000
|
return /* @__PURE__ */ jsxs97(
|
|
27784
28001
|
"div",
|
|
27785
28002
|
{
|
|
@@ -28018,7 +28235,7 @@ var buildUserFilterData = (userData) => ({
|
|
|
28018
28235
|
});
|
|
28019
28236
|
|
|
28020
28237
|
// src/hooks/useChat.ts
|
|
28021
|
-
import { useState as
|
|
28238
|
+
import { useState as useState53, useEffect as useEffect50, useCallback as useCallback34, useRef as useRef33 } from "react";
|
|
28022
28239
|
var WS_STATES = {
|
|
28023
28240
|
CONNECTING: 0,
|
|
28024
28241
|
OPEN: 1,
|
|
@@ -28037,25 +28254,25 @@ function useChat({
|
|
|
28037
28254
|
reconnectInterval = 3e3,
|
|
28038
28255
|
maxReconnectAttempts = 5
|
|
28039
28256
|
}) {
|
|
28040
|
-
const [isConnected, setIsConnected] =
|
|
28041
|
-
const [messages, setMessages] =
|
|
28042
|
-
const [participants, setParticipants] =
|
|
28043
|
-
const [error, setError] =
|
|
28044
|
-
const wsRef =
|
|
28045
|
-
const reconnectAttemptsRef =
|
|
28046
|
-
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(
|
|
28047
28264
|
null
|
|
28048
28265
|
);
|
|
28049
|
-
const isManualDisconnectRef =
|
|
28050
|
-
const isConnectingRef =
|
|
28051
|
-
const connectRef =
|
|
28266
|
+
const isManualDisconnectRef = useRef33(false);
|
|
28267
|
+
const isConnectingRef = useRef33(false);
|
|
28268
|
+
const connectRef = useRef33(() => {
|
|
28052
28269
|
});
|
|
28053
|
-
const sendWsMessage =
|
|
28270
|
+
const sendWsMessage = useCallback34((message) => {
|
|
28054
28271
|
if (wsRef.current?.readyState === WS_STATES.OPEN) {
|
|
28055
28272
|
wsRef.current.send(JSON.stringify(message));
|
|
28056
28273
|
}
|
|
28057
28274
|
}, []);
|
|
28058
|
-
const sendMessage =
|
|
28275
|
+
const sendMessage = useCallback34(
|
|
28059
28276
|
(content) => {
|
|
28060
28277
|
const trimmedContent = content.trim();
|
|
28061
28278
|
if (!trimmedContent) return;
|
|
@@ -28066,12 +28283,12 @@ function useChat({
|
|
|
28066
28283
|
},
|
|
28067
28284
|
[sendWsMessage]
|
|
28068
28285
|
);
|
|
28069
|
-
const leave =
|
|
28286
|
+
const leave = useCallback34(() => {
|
|
28070
28287
|
isManualDisconnectRef.current = true;
|
|
28071
28288
|
sendWsMessage({ type: "leave" });
|
|
28072
28289
|
wsRef.current?.close(1e3, "User left");
|
|
28073
28290
|
}, [sendWsMessage]);
|
|
28074
|
-
const handleMessage =
|
|
28291
|
+
const handleMessage = useCallback34(
|
|
28075
28292
|
(event) => {
|
|
28076
28293
|
try {
|
|
28077
28294
|
const data = JSON.parse(event.data);
|
|
@@ -28139,7 +28356,7 @@ function useChat({
|
|
|
28139
28356
|
},
|
|
28140
28357
|
[onError]
|
|
28141
28358
|
);
|
|
28142
|
-
const connect =
|
|
28359
|
+
const connect = useCallback34(() => {
|
|
28143
28360
|
if (isConnectingRef.current) {
|
|
28144
28361
|
return;
|
|
28145
28362
|
}
|
|
@@ -28193,7 +28410,7 @@ function useChat({
|
|
|
28193
28410
|
maxReconnectAttempts
|
|
28194
28411
|
]);
|
|
28195
28412
|
connectRef.current = connect;
|
|
28196
|
-
const reconnect =
|
|
28413
|
+
const reconnect = useCallback34(() => {
|
|
28197
28414
|
isManualDisconnectRef.current = false;
|
|
28198
28415
|
reconnectAttemptsRef.current = 0;
|
|
28199
28416
|
connectRef.current();
|
|
@@ -28242,15 +28459,15 @@ function createUseChat(baseWsUrl) {
|
|
|
28242
28459
|
}
|
|
28243
28460
|
|
|
28244
28461
|
// src/hooks/useChatRooms.ts
|
|
28245
|
-
import { useState as
|
|
28462
|
+
import { useState as useState54, useCallback as useCallback35 } from "react";
|
|
28246
28463
|
function useChatRooms({
|
|
28247
28464
|
apiClient
|
|
28248
28465
|
}) {
|
|
28249
|
-
const [rooms, setRooms] =
|
|
28250
|
-
const [availableUsers, setAvailableUsers] =
|
|
28251
|
-
const [loading, setLoading] =
|
|
28252
|
-
const [error, setError] =
|
|
28253
|
-
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 () => {
|
|
28254
28471
|
setLoading(true);
|
|
28255
28472
|
setError(null);
|
|
28256
28473
|
try {
|
|
@@ -28266,7 +28483,7 @@ function useChatRooms({
|
|
|
28266
28483
|
setLoading(false);
|
|
28267
28484
|
}
|
|
28268
28485
|
}, [apiClient]);
|
|
28269
|
-
const fetchAvailableUsers =
|
|
28486
|
+
const fetchAvailableUsers = useCallback35(async () => {
|
|
28270
28487
|
setLoading(true);
|
|
28271
28488
|
setError(null);
|
|
28272
28489
|
try {
|
|
@@ -28282,7 +28499,7 @@ function useChatRooms({
|
|
|
28282
28499
|
setLoading(false);
|
|
28283
28500
|
}
|
|
28284
28501
|
}, [apiClient]);
|
|
28285
|
-
const createRoom =
|
|
28502
|
+
const createRoom = useCallback35(
|
|
28286
28503
|
async (participantIds) => {
|
|
28287
28504
|
setLoading(true);
|
|
28288
28505
|
setError(null);
|
|
@@ -28306,7 +28523,7 @@ function useChatRooms({
|
|
|
28306
28523
|
},
|
|
28307
28524
|
[apiClient, fetchRooms]
|
|
28308
28525
|
);
|
|
28309
|
-
const clearError =
|
|
28526
|
+
const clearError = useCallback35(() => {
|
|
28310
28527
|
setError(null);
|
|
28311
28528
|
}, []);
|
|
28312
28529
|
return {
|
|
@@ -28340,7 +28557,7 @@ var CHAT_MESSAGE_TYPES = {
|
|
|
28340
28557
|
};
|
|
28341
28558
|
|
|
28342
28559
|
// src/components/Chat/Chat.tsx
|
|
28343
|
-
import { useState as
|
|
28560
|
+
import { useState as useState55, useEffect as useEffect51, useCallback as useCallback36, useRef as useRef34 } from "react";
|
|
28344
28561
|
import {
|
|
28345
28562
|
PaperPlaneTiltIcon as PaperPlaneTiltIcon2,
|
|
28346
28563
|
XIcon,
|
|
@@ -28493,16 +28710,16 @@ function ChatContent({
|
|
|
28493
28710
|
onRoomChange,
|
|
28494
28711
|
onBackToList
|
|
28495
28712
|
}) {
|
|
28496
|
-
const [view, setView] =
|
|
28497
|
-
const [selectedRoom, setSelectedRoom] =
|
|
28713
|
+
const [view, setView] = useState55("list");
|
|
28714
|
+
const [selectedRoom, setSelectedRoom] = useState55(
|
|
28498
28715
|
null
|
|
28499
28716
|
);
|
|
28500
|
-
const [selectedUserIds, setSelectedUserIds] =
|
|
28717
|
+
const [selectedUserIds, setSelectedUserIds] = useState55(
|
|
28501
28718
|
/* @__PURE__ */ new Set()
|
|
28502
28719
|
);
|
|
28503
|
-
const [messageInput, setMessageInput] =
|
|
28504
|
-
const [showCreateModal, setShowCreateModal] =
|
|
28505
|
-
const hasHandledInitialRoomRef =
|
|
28720
|
+
const [messageInput, setMessageInput] = useState55("");
|
|
28721
|
+
const [showCreateModal, setShowCreateModal] = useState55(false);
|
|
28722
|
+
const hasHandledInitialRoomRef = useRef34(false);
|
|
28506
28723
|
const {
|
|
28507
28724
|
rooms,
|
|
28508
28725
|
availableUsers,
|
|
@@ -28555,7 +28772,7 @@ function ChatContent({
|
|
|
28555
28772
|
onBackToList?.();
|
|
28556
28773
|
}
|
|
28557
28774
|
}, [initialRoomId, rooms, roomsLoading, onBackToList]);
|
|
28558
|
-
const handleSelectRoom =
|
|
28775
|
+
const handleSelectRoom = useCallback36(
|
|
28559
28776
|
(room) => {
|
|
28560
28777
|
setSelectedRoom(room);
|
|
28561
28778
|
setView("room");
|
|
@@ -28563,12 +28780,12 @@ function ChatContent({
|
|
|
28563
28780
|
},
|
|
28564
28781
|
[onRoomChange]
|
|
28565
28782
|
);
|
|
28566
|
-
const handleOpenCreateModal =
|
|
28783
|
+
const handleOpenCreateModal = useCallback36(async () => {
|
|
28567
28784
|
await fetchAvailableUsers();
|
|
28568
28785
|
setSelectedUserIds(/* @__PURE__ */ new Set());
|
|
28569
28786
|
setShowCreateModal(true);
|
|
28570
28787
|
}, [fetchAvailableUsers]);
|
|
28571
|
-
const handleToggleUser =
|
|
28788
|
+
const handleToggleUser = useCallback36((id) => {
|
|
28572
28789
|
setSelectedUserIds((prev) => {
|
|
28573
28790
|
const next = new Set(prev);
|
|
28574
28791
|
if (next.has(id)) {
|
|
@@ -28579,7 +28796,7 @@ function ChatContent({
|
|
|
28579
28796
|
return next;
|
|
28580
28797
|
});
|
|
28581
28798
|
}, []);
|
|
28582
|
-
const handleCreateRoom =
|
|
28799
|
+
const handleCreateRoom = useCallback36(async () => {
|
|
28583
28800
|
if (selectedUserIds.size === 0) return;
|
|
28584
28801
|
const room = await createRoom(Array.from(selectedUserIds));
|
|
28585
28802
|
if (room) {
|
|
@@ -28588,12 +28805,12 @@ function ChatContent({
|
|
|
28588
28805
|
onRoomChange?.(room.id);
|
|
28589
28806
|
}
|
|
28590
28807
|
}, [selectedUserIds, createRoom, onRoomChange]);
|
|
28591
|
-
const handleSendMessage =
|
|
28808
|
+
const handleSendMessage = useCallback36(() => {
|
|
28592
28809
|
if (!messageInput.trim()) return;
|
|
28593
28810
|
sendMessage(messageInput);
|
|
28594
28811
|
setMessageInput("");
|
|
28595
28812
|
}, [messageInput, sendMessage]);
|
|
28596
|
-
const handleBackToList =
|
|
28813
|
+
const handleBackToList = useCallback36(() => {
|
|
28597
28814
|
setSelectedRoom(null);
|
|
28598
28815
|
setView("list");
|
|
28599
28816
|
onBackToList?.();
|
|
@@ -28839,7 +29056,7 @@ var CalendarActivityStatus = /* @__PURE__ */ ((CalendarActivityStatus2) => {
|
|
|
28839
29056
|
})(CalendarActivityStatus || {});
|
|
28840
29057
|
|
|
28841
29058
|
// src/hooks/useSendActivity.ts
|
|
28842
|
-
import { useState as
|
|
29059
|
+
import { useState as useState56, useCallback as useCallback37, useMemo as useMemo31, useRef as useRef35 } from "react";
|
|
28843
29060
|
import dayjs7 from "dayjs";
|
|
28844
29061
|
function transformToCategoryConfig(data) {
|
|
28845
29062
|
return [
|
|
@@ -28894,21 +29111,21 @@ function useSendActivity(config) {
|
|
|
28894
29111
|
onSuccess,
|
|
28895
29112
|
onError
|
|
28896
29113
|
} = config;
|
|
28897
|
-
const [isOpen, setIsOpen] =
|
|
28898
|
-
const [selectedModel, setSelectedModel] =
|
|
29114
|
+
const [isOpen, setIsOpen] = useState56(false);
|
|
29115
|
+
const [selectedModel, setSelectedModel] = useState56(
|
|
28899
29116
|
null
|
|
28900
29117
|
);
|
|
28901
|
-
const [categories, setCategories] =
|
|
28902
|
-
const [isLoading, setIsLoading] =
|
|
28903
|
-
const [isCategoriesLoading, setIsCategoriesLoading] =
|
|
28904
|
-
const categoriesLoadedRef =
|
|
28905
|
-
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(() => {
|
|
28906
29123
|
if (!selectedModel) return void 0;
|
|
28907
29124
|
return {
|
|
28908
29125
|
title: selectedModel.title
|
|
28909
29126
|
};
|
|
28910
29127
|
}, [selectedModel]);
|
|
28911
|
-
const loadCategories =
|
|
29128
|
+
const loadCategories = useCallback37(async () => {
|
|
28912
29129
|
if (categoriesLoadedRef.current) return;
|
|
28913
29130
|
setIsCategoriesLoading(true);
|
|
28914
29131
|
try {
|
|
@@ -28923,7 +29140,7 @@ function useSendActivity(config) {
|
|
|
28923
29140
|
setIsCategoriesLoading(false);
|
|
28924
29141
|
}
|
|
28925
29142
|
}, [fetchCategories, onError]);
|
|
28926
|
-
const openModal =
|
|
29143
|
+
const openModal = useCallback37(
|
|
28927
29144
|
(model) => {
|
|
28928
29145
|
setSelectedModel(model);
|
|
28929
29146
|
setIsOpen(true);
|
|
@@ -28931,17 +29148,17 @@ function useSendActivity(config) {
|
|
|
28931
29148
|
},
|
|
28932
29149
|
[loadCategories]
|
|
28933
29150
|
);
|
|
28934
|
-
const closeModal =
|
|
29151
|
+
const closeModal = useCallback37(() => {
|
|
28935
29152
|
setIsOpen(false);
|
|
28936
29153
|
setSelectedModel(null);
|
|
28937
29154
|
}, []);
|
|
28938
|
-
const onCategoriesChange =
|
|
29155
|
+
const onCategoriesChange = useCallback37(
|
|
28939
29156
|
(updatedCategories) => {
|
|
28940
29157
|
setCategories(updatedCategories);
|
|
28941
29158
|
},
|
|
28942
29159
|
[]
|
|
28943
29160
|
);
|
|
28944
|
-
const handleSubmit =
|
|
29161
|
+
const handleSubmit = useCallback37(
|
|
28945
29162
|
async (data) => {
|
|
28946
29163
|
if (!selectedModel) return;
|
|
28947
29164
|
setIsLoading(true);
|
|
@@ -29197,6 +29414,7 @@ export {
|
|
|
29197
29414
|
createQuestionsListHook,
|
|
29198
29415
|
createRecommendedLessonDetailsHook,
|
|
29199
29416
|
createRecommendedLessonsHistoryHook,
|
|
29417
|
+
createRecommendedLessonsPageHook,
|
|
29200
29418
|
createUseActivitiesHistory,
|
|
29201
29419
|
createUseActivityFiltersData,
|
|
29202
29420
|
createUseActivityModels,
|
|
@@ -29208,6 +29426,7 @@ export {
|
|
|
29208
29426
|
createUseQuestionsList,
|
|
29209
29427
|
createUseRecommendedLessonDetails,
|
|
29210
29428
|
createUseRecommendedLessonsHistory,
|
|
29429
|
+
createUseRecommendedLessonsPage,
|
|
29211
29430
|
createZustandAuthAdapter,
|
|
29212
29431
|
deriveStudentStatus,
|
|
29213
29432
|
determineGoalStatus,
|