import FormLayout, { FormField, FormLabelAndMessage, Input, Textarea } from '@components/StyledElements/Form/Form'; import { useFormik } from 'formik'; import { AlertTriangle } from 'lucide-react' import * as Switch from '@radix-ui/react-switch'; import * as Form from '@radix-ui/react-form'; import React from 'react' import { useCourse, useCourseDispatch } from '../../../Contexts/CourseContext'; import ThumbnailUpdate from './ThumbnailUpdate'; type EditCourseStructureProps = { orgslug: string, course_uuid?: string, } const validate = (values: any) => { const errors: any = {}; if (!values.name) { errors.name = 'Required'; } if (values.name.length > 100) { errors.name = 'Must be 100 characters or less'; } if (!values.description) { errors.description = 'Required'; } if (values.description.length > 1000) { errors.description = 'Must be 1000 characters or less'; } if (!values.learnings) { errors.learnings = 'Required'; } return errors; }; function EditCourseGeneral(props: EditCourseStructureProps) { const [error, setError] = React.useState(''); const course = useCourse() as any; const dispatchCourse = useCourseDispatch() as any; const courseStructure = course.courseStructure; const formik = useFormik({ initialValues: { name: String(courseStructure.name), description: String(courseStructure.description), about: String(courseStructure.about), learnings: String(courseStructure.learnings), tags: String(courseStructure.tags), public: String(courseStructure.public), }, validate, onSubmit: async values => { }, enableReinitialize: true, }); React.useEffect(() => { // This code will run whenever form values are updated if (formik.values !== formik.initialValues) { dispatchCourse({ type: 'setIsNotSaved' }); const updatedCourse = { ...courseStructure, name: formik.values.name, description: formik.values.description, about: formik.values.about, learnings: formik.values.learnings, tags: formik.values.tags, public: formik.values.public, } dispatchCourse({ type: 'setCourseStructure', payload: updatedCourse }); } }, [course, formik.values, formik.initialValues]); return (