import { useEffect, useState } from 'react'; import { useSocket } from '../../app/context/socketContext'; import style from './DefaultPresenter.module.css'; export default function DefaultPresenter() { const socket = useSocket(); const [pres, setPres] = useState({ text: '', visible: false, }); const [publ, setPubl] = useState({ text: '', visible: false, }); const [lower, setLower] = useState({ text: '', visible: false, }); const [timer, setTimer] = useState({ clock: null, currentSeconds: null, startedAt: null, expectedFinish: null, }); const [titles, setTitles] = useState({ titleNow: '', subtitleNow: '', presenterNow: '', titleNext: '', subtitleNext: '', presenterNext: '', }); // Ask for update on load useEffect(() => { if (socket == null) return; // Handle presenter messages socket.on('messages-presenter', (data) => { setPres({ ...data }); }); // Handle public messages socket.on('messages-public', (data) => { setPubl({ ...data }); }); // Handle lower third messages socket.on('messages-lower', (data) => { setLower({ ...data }); }); // Handle timer socket.on('timer', (data) => { setTimer({ ...data }); }); // Handle timer socket.on('titles', (data) => { setTitles({ ...data }); }); // Ask for up to date data socket.emit('get-messages'); // Ask for up to data socket.emit('get-presenter'); // Ask for up titles socket.emit('get-titles'); // Clear listeners return () => { socket.off('messages-public'); socket.off('messages-presenter'); socket.off('messages-lower'); socket.off('timer'); socket.off('titles'); }; }, [socket]); return (
Clock: {timer.clock} Timer: {timer.currentSeconds} Started: {timer.startedAt} Finish: {timer.expectedFinish}
Presenter Message: {pres.text} Vis: {pres.visible ? 'visible' : 'invisible'}
Public Message: {publ.text} Vis: {publ.visible ? 'visible' : 'invisible'}
Lower third Message: {lower.text} Vis: {lower.visible ? 'visible' : 'invisible'}
Title Now: {titles.titleNow} Subtitle Now: {titles.subtitleNow} Presenter Now: {titles.presenterNow}
Title Next: {titles.titleNext} Subtitle Next: {titles.subtitleNext} Presenter Next: {titles.presenterNext}
); }