import React from 'react'; import styles from './styles.module.css'; import Modal from 'react-modal'; import Agenda from '../agenda'; import FAQ from '../faq'; import Room from '../room'; import Speakers from '../speakers'; import useBaseUrl from '@docusaurus/useBaseUrl'; import {addDarkToFileName} from '../../../util/util'; import ThemedImage from '@theme/ThemedImage'; import BrowserOnly from '@docusaurus/BrowserOnly'; import {useEffect, useState} from 'react'; import io from 'socket.io-client'; import { getRegistration, getSpeaker, submitAttendance, submitSurvey, URL, } from '../../../services/StreamService'; const socket = io(URL); export default function Main() { const [isConnected, setIsConnected] = useState(false); const BackupStageData = { IDN: { day: '1', topic: 'Conference Starting 03.07.23', startTime: '2023-03-07T14:00:00.000Z', endTime: '2023-03-07T15:00:00.000Z', stage: 'IDN', active: true, speakers: [], id: 'reciq5lGqHOyl1Zzy', muxPlaybackId: 'placeholdervideo', muxEnvironmentKey: 'j4iije0sv1ih8shgurfp3ldkq', typeformId: 'RlYAvjZo', surveyDisplayed: false, allStages: false, hidden: true, }, IIQ: { day: '1', topic: 'Conference Starting 03.07.23', startTime: '2023-03-07T14:00:00.000Z', endTime: '2023-03-07T15:00:00.000Z', stage: 'IIQ', active: true, speakers: [], id: 'reciq5lGqHOyl1Zzy', muxPlaybackId: 'placeholdervideo', muxEnvironmentKey: 'j4iije0sv1ih8shgurfp3ldkq', typeformId: 'RlYAvjZo', surveyDisplayed: false, allStages: false, hidden: true, }, }; const [stages, setStages] = useState(BackupStageData); const [stage, setStage] = useState('IDN'); const [speakers, setSpeakers] = useState([]); const [surveyOpen, setSurveyOpen] = useState(false); const [loginOpen, setLoginOpen] = useState(false); const [rating, setRating] = useState(0); const [hover, setHover] = useState(0); const [feedback, setFeedback] = useState(''); const [emailValidationError, setEmailValidationError] = useState(false); const [starValidationError, setStarValidationError] = useState(false); const [email, setEmail] = useState(''); const [name, setName] = useState(''); const [title, setTitle] = useState(''); const [company, setCompany] = useState(''); const [userID, setUserID] = useState('Unregistered User'); const getSpeakers = async () => { const data = await getSpeaker(); console.log('Speaker Data'); console.log(data); setSpeakers(data); }; React.useEffect(() => { getSpeakers(); }, []); React.useEffect(async () => { console.log('Starting Registration'); const reg = await getRegistration(); console.log(reg); openLoginPage(reg); }, []); //setting socket here useEffect(() => { console.log('Creating effect'); socket.on('connect', () => { console.log('Socket Connect'); socket.emit('register'); setIsConnected(true); }); socket.on('disconnect', () => { setIsConnected(false); }); socket.on('stream', (data) => { console.log('incoming Data'); console.log(data); if (data?.stages?.IDN) { if (Object.keys(data.stages?.IDN).length <= 0) { data.stages.IDN = BackupStageData.IDN; } } if (data?.stages?.IIQ) { if (Object.keys(data.stages?.IIQ).length <= 0) { data.stages.IIQ = BackupStageData.IIQ; } } setStages(data.stages); }); return () => { socket.off('connect'); socket.off('disconnect'); socket.off('stream'); socket.off('survey'); }; }, []); function openSurvey() { setFeedback(''); setRating(0); setHover(0); setStarValidationError(false); setSurveyOpen(true); } useEffect(() => { socket.on('survey', (data) => { if (stage === data) { openSurvey(); } }); return () => { socket.off('survey'); }; }, [stage]); function changeToIDNStage() { setStage('IDN'); console.log('Changing Stage'); } function changeToIIQStage() { setStage('IIQ'); console.log('Changing Stage'); } function openLoginPage(reg) { setTimeout(() => { console.log('opening login page'); let pop_status = localStorage.getItem('entry-status'); console.log(pop_status); console.log(reg); setUserID(pop_status); if (!pop_status && reg) { console.log('open'); setLoginOpen(true); } }, 1000); } Modal.setAppElement('#__docusaurus'); const eventSpeakers = stages[stage]?.speakers?.map((speakerId, index) => { return speakers.filter((obj) => obj.id === speakerId)[0]; }); const iiqSelectedClass = stage === 'IIQ' ? styles.stageButtonActive : ''; const idnSelectedClass = stage === 'IDN' ? styles.stageButtonActive : ''; return (
{stages[stage]?.topic}
{stages[stage]?.startTime && new Date(stages[stage]?.startTime).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', })} {(stages[stage]?.endTime && `-` + new Date(stages[stage]?.endTime).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', })) || null}
{stages[stage]?.topicLink && (
Discuss this topic in the Developer Community
)}
{eventSpeakers?.map((spkr) => { return (
{spkr?.name}
{spkr?.title}
); })}
setSurveyOpen(false)} className={styles.modal} contentLabel="Survey">
Survey
  1. How valuable was the session "{stages[stage]?.topic}" to you? {starValidationError === true && (

    Rating is required

    )}

    {[...Array(5)].map((star, index) => { index += 1; return ( ); })}
  2. Is there anything else you'd like the presenter(s) of this session to know?