import React, { useEffect, useState } from 'react'; import { useSocket } from 'app/context/socketContext'; import InputRow from './InputRow'; import OnAirIconBtn from '../../../common/components/buttons/OnAirIconBtn'; import style from './MessageControl.module.scss'; export default function MessageControl() { 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 [onAir, setonAir] = useState(false); useEffect(() => { if (socket == null) return; // Handle timer messages socket.on('messages-timer', (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 lower third messages socket.on('onAir', (data) => { setonAir(data); }); // Ask for up to date data socket.emit('get-messages'); // Ask for onAir state socket.emit('get-onAir'); // Clear listeners return () => { socket.off('messages-public'); socket.off('messages-timer'); socket.off('messages-lower'); socket.off('onAir'); }; }, [socket]); const messageControl = async (action, payload) => { switch (action) { case 'pres-text': socket.emit('set-timer-text', payload); break; case 'toggle-pres-visible': socket.emit('set-timer-visible', !pres.visible); break; case 'publ-text': socket.emit('set-public-text', payload); break; case 'toggle-publ-visible': socket.emit('set-public-visible', !publ.visible); break; case 'lower-text': socket.emit('set-lower-text', payload); break; case 'toggle-lower-visible': socket.emit('set-lower-visible', !lower.visible); break; case 'toggle-onAir': socket.emit('set-onAir', !onAir); break; default: break; } }; return ( <>