import React from 'react' import YouTube from 'react-youtube' import { getActivityMediaDirectory } from '@services/media/media' import { useOrg } from '@components/Contexts/OrgContext' interface VideoDetails { startTime?: number endTime?: number | null autoplay?: boolean muted?: boolean } interface VideoActivityProps { activity: { activity_sub_type: string activity_uuid: string content: { filename?: string uri?: string } details?: VideoDetails } course: { course_uuid: string } } function VideoActivity({ activity, course }: VideoActivityProps) { const org = useOrg() as any const [videoId, setVideoId] = React.useState('') const videoRef = React.useRef(null) React.useEffect(() => { if (activity?.content?.uri) { var getYouTubeID = require('get-youtube-id') setVideoId(getYouTubeID(activity.content.uri)) } }, [activity, org]) const getVideoSrc = () => { if (!activity.content?.filename) return '' return getActivityMediaDirectory( org?.org_uuid, course?.course_uuid, activity.activity_uuid, activity.content.filename, 'video' ) } // Handle native video time update const handleTimeUpdate = () => { const video = videoRef.current if (video && activity.details?.endTime) { if (video.currentTime >= activity.details.endTime) { video.pause() } } } // Handle native video load const handleVideoLoad = () => { const video = videoRef.current if (video && activity.details) { video.currentTime = activity.details.startTime || 0 video.autoplay = activity.details.autoplay || false video.muted = activity.details.muted || false } } return (
{activity && ( <> {activity.activity_sub_type === 'SUBTYPE_VIDEO_HOSTED' && (
)} {activity.activity_sub_type === 'SUBTYPE_VIDEO_YOUTUBE' && (
)} )}
) } export default VideoActivity