Обновлен компонент LessonList: изменена логика генерации уроков при открытии формы создания, добавлены обработчики для редактирования уроков. Обновлены компоненты Item и LessonItems для поддержки новых функций редактирования. Упрощена логика запуска генерации уроков.
This commit is contained in:
parent
e178ce5cd6
commit
3357c9ddd0
@ -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')}
|
||||
|
@ -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}
|
||||
/>
|
||||
|
@ -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}
|
||||
/>
|
||||
))}
|
||||
|
Loading…
x
Reference in New Issue
Block a user