"use client"; import Link from "next/link"; import { FormEvent, useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { addLessonToTeacherCourse, getTeacherCourseBySlug, teacherCoursesUpdatedEventName } from "@/lib/data/teacherCourses"; import type { Course, LessonType } from "@/types/course"; const lessonTypes: LessonType[] = ["video", "reading", "interactive"]; type TeacherNewLessonFormProps = { slug: string; }; export default function TeacherNewLessonForm({ slug }: TeacherNewLessonFormProps) { const router = useRouter(); const [course, setCourse] = useState(null); const [title, setTitle] = useState(""); const [type, setType] = useState("video"); const [minutes, setMinutes] = useState(10); const [isPreview, setIsPreview] = useState(false); const [videoUrl, setVideoUrl] = useState(""); const [error, setError] = useState(null); useEffect(() => { const load = () => setCourse(getTeacherCourseBySlug(slug) ?? null); load(); window.addEventListener(teacherCoursesUpdatedEventName, load); return () => window.removeEventListener(teacherCoursesUpdatedEventName, load); }, [slug]); const submit = (event: FormEvent) => { event.preventDefault(); setError(null); if (!course) { setError("Teacher course not found."); return; } if (!title.trim()) { setError("Lesson title is required."); return; } addLessonToTeacherCourse(course.slug, { title: title.trim(), type, minutes: Math.max(1, minutes), isPreview, videoUrl: type === "video" ? videoUrl.trim() : undefined, }); router.push(`/teacher/courses/${course.slug}/edit`); }; if (!course) { return (

Teacher course not found

This lesson creator only works for courses created in the teacher area.

Back to dashboard
); } return (

Add Lesson

Course: {course.title}

{type === "video" ? ( ) : null} {error ?

{error}

: null}
); }