bendwidth / frontend / src / videoComponents / ActionButtons.js
ActionButtons.js
Raw
import VideoButton from "./VideoButton";
import AudioButton from "./AudioButton";
import ShareScreenButton from "./ShareScreenButton";
import HangUpButton from "./HangUpButton";
import { useEffect, useRef } from "react";
const ActionButtons = ({ smallFeedEl, largeFeedEl }) => {
    const controlButtons = useRef(null);

    // control hiding of control buttons.
    useEffect(() => {
    let timer;

    const hideButtons = () => {
        timer = setTimeout(() => {
            if (controlButtons.current) {
                controlButtons.current.classList.add('hidden');
            }
        }, 8000);
    };

    const handleMouseMove = () => {
        if (controlButtons.current && controlButtons.current.classList.contains('hidden')) {
            controlButtons.current.classList.remove('hidden');
        }
        clearTimeout(timer);
        hideButtons();
    };

    window.addEventListener('mousemove', handleMouseMove);

    // Cleanup function to remove event listener
    return () => {
        window.removeEventListener('mousemove', handleMouseMove);
        clearTimeout(timer); // Clear timeout on component unmount
    };
}, []);
    return (
        <div ref={controlButtons} className="row video-buttons">
            <AudioButton smallFeedEl={smallFeedEl} />
            <VideoButton smallFeedEl={smallFeedEl}/>
            <ShareScreenButton />
            <HangUpButton smallFeedEl={smallFeedEl} largeFeedEl={largeFeedEl}/>
        </div>
    )
}

export default ActionButtons;