Обновлен компонент LessonList: изменена логика генерации уроков при открытии формы создания, добавлены обработчики для редактирования уроков. Обновлены компоненты Item и LessonItems для поддержки новых функций редактирования. Упрощена логика запуска генерации уроков.

This commit is contained in:
Primakov Alexandr Alexandrovich 2025-03-23 15:00:08 +03:00
parent e178ce5cd6
commit 3357c9ddd0
3 changed files with 37 additions and 8 deletions

View File

@ -30,6 +30,7 @@ type ItemProps = {
isTeacher: boolean
courseId: string
setlessonToDelete(): void
setEditLesson?: () => void
students: unknown[]
}
@ -40,6 +41,7 @@ export const Item: React.FC<ItemProps> = ({
isTeacher,
courseId,
setlessonToDelete,
setEditLesson,
students,
}) => {
const [edit, setEdit] = useState(false)
@ -128,7 +130,11 @@ export const Item: React.FC<ItemProps> = ({
<MenuList>
<MenuItem
onClick={() => {
setEdit(true)
if (setEditLesson) {
setEditLesson();
} else {
setEdit(true);
}
}}
>
{t('journal.pl.edit')}

View File

@ -15,6 +15,7 @@ type LessonItemProps = {
isTeacher: boolean
courseId: string
setlessonToDelete(lesson: Lesson): void
setEditLesson?(lesson: Lesson): void
}
export const LessonItems: React.FC<LessonItemProps> = ({
@ -23,6 +24,7 @@ export const LessonItems: React.FC<LessonItemProps> = ({
isTeacher,
courseId,
setlessonToDelete,
setEditLesson,
}) => (
<>
{date && (
@ -37,6 +39,7 @@ export const LessonItems: React.FC<LessonItemProps> = ({
key={lesson.id}
{...lesson}
setlessonToDelete={() => setlessonToDelete(lesson)}
setEditLesson={setEditLesson ? () => setEditLesson(lesson) : undefined}
courseId={courseId}
isTeacher={isTeacher}
/>

View File

@ -102,12 +102,6 @@ const LessonList = () => {
return lessonsData.sort((a, b) => (a.date < b.date ? 1 : -1))
}, [groupByDate, isSuccess, sorted])
useEffect(() => {
if (isTeacher(user) && !isSuccessGenerateLessons) {
generateLessonsMutation(courseId)
}
}, [isSuccessGenerateLessons, user, courseId, generateLessonsMutation])
useEffect(() => {
if (isSuccessGenerateLessons) {
console.log(generateLessons)
@ -205,6 +199,31 @@ const LessonList = () => {
setShowForm(false)
setEditLesson(null)
setSuggestedLessonToCreate(null)
// Сбрасываем флаги генерации, чтобы при повторном открытии формы
// генерация запускалась снова
if (generateLessons) {
// Сбрасываем данные генерации (если в API есть такая возможность)
// или при повторном открытии формы будем перезапрашивать данные
}
}
// Обработчик открытия формы создания новой лекции
const handleOpenForm = () => {
setShowForm(true)
// Запускаем генерацию лекций только при открытии формы создания новой лекции
// и если генерация ещё не была запущена
if (isTeacher(user) && !editLesson && !generateLessons && !isLoadingGenerateLessons) {
generateLessonsMutation(courseId)
}
}
// Обработчик редактирования существующей лекции
const handleEditLesson = (lesson) => {
setEditLesson(lesson)
setShowForm(true)
// Не запускаем генерацию при редактировании
}
if (isLoading) {
@ -284,7 +303,7 @@ const LessonList = () => {
<Button
leftIcon={<AddIcon />}
colorScheme="green"
onClick={() => setShowForm(true)}
onClick={handleOpenForm}
>
{t('journal.pl.common.create')}
</Button>
@ -326,6 +345,7 @@ const LessonList = () => {
isTeacher={isTeacher(user)}
lessons={lessons}
setlessonToDelete={setlessonToDelete}
setEditLesson={handleEditLesson}
key={date}
/>
))}