import FormLayout, { FormField, FormLabelAndMessage, Input, Textarea, } from '@components/StyledElements/Form/Form' import { useFormik } from 'formik' import { AlertTriangle } from 'lucide-react' 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 (
{' '}
{course.courseStructure && (
{error && (
{error}
)}