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 (