import FormLayout, { ButtonBlack, Flex, FormField, FormLabel, FormMessage, Input, } from '@components/Objects/StyledElements/Form/Form' import React, { useState } from 'react' import * as Form from '@radix-ui/react-form' import BarLoader from 'react-spinners/BarLoader' import { Youtube, Upload } from 'lucide-react' import { constructAcceptValue } from '@/lib/constants' const SUPPORTED_FILES = constructAcceptValue(['mp4', 'webm']) interface ExternalVideoObject { name: string type: string uri: string chapter_id: string } function VideoModal({ submitFileActivity, submitExternalVideo, chapterId, course, }: any) { const [video, setVideo] = React.useState(null) const [isSubmitting, setIsSubmitting] = useState(false) const [name, setName] = React.useState('') const [youtubeUrl, setYoutubeUrl] = React.useState('') const [selectedView, setSelectedView] = React.useState<'file' | 'youtube'>('file') const handleVideoChange = (event: React.ChangeEvent) => { if (event.target.files?.[0]) { setVideo(event.target.files[0]) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) try { if (selectedView === 'file' && video) { await submitFileActivity( video, 'video', { name: name, chapter_id: chapterId, activity_type: 'TYPE_VIDEO', activity_sub_type: 'SUBTYPE_VIDEO_HOSTED', published_version: 1, version: 1, course_id: course.id, }, chapterId ) } if (selectedView === 'youtube') { const external_video_object: ExternalVideoObject = { name, type: 'youtube', uri: youtubeUrl, chapter_id: chapterId, } await submitExternalVideo( external_video_object, 'activity', chapterId ) } } finally { setIsSubmitting(false) } } return ( Activity Name Please provide a name for your video activity setName(e.target.value)} type="text" required placeholder="Enter activity name..." />
{selectedView === 'file' && (
Video File
)} {selectedView === 'youtube' && (
YouTube URL setYoutubeUrl(e.target.value)} type="text" required placeholder="https://youtube.com/watch?v=..." />
)}
{isSubmitting ? ( ) : ( 'Create Activity' )}
) } export default VideoModal