From 13fd45c84e985bc72878e1533b23955ca746b4c6 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 13 Mar 2024 17:12:30 -0600 Subject: [PATCH] Simplify more --- web/src/components/player/HlsVideoPlayer.tsx | 40 +++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/web/src/components/player/HlsVideoPlayer.tsx b/web/src/components/player/HlsVideoPlayer.tsx index d52ccf6ee..6d6df7268 100644 --- a/web/src/components/player/HlsVideoPlayer.tsx +++ b/web/src/components/player/HlsVideoPlayer.tsx @@ -94,7 +94,6 @@ export default function HlsVideoPlayer({ // controls const [isPlaying, setIsPlaying] = useState(true); - const [volume, setVolume] = useState(0.0); const [mobileCtrlTimeout, setMobileCtrlTimeout] = useState(); const [controls, setControls] = useState(isMobile); const [controlsOpen, setControlsOpen] = useState(false); @@ -126,11 +125,7 @@ export default function HlsVideoPlayer({ break; case "m": if (down && !repeat && videoRef.current) { - if (videoRef.current.muted) { - videoRef.current.volume = 1; - } else { - videoRef.current.volume = 0; - } + videoRef.current.muted = !videoRef.current.muted; } break; case " ": @@ -179,8 +174,7 @@ export default function HlsVideoPlayer({ autoPlay controls={false} playsInline - muted={volume == 0.0} - onVolumeChange={() => setVolume(videoRef.current?.volume ?? 0.0)} + muted onPlay={() => { setIsPlaying(true); @@ -217,7 +211,6 @@ export default function HlsVideoPlayer({ void; @@ -238,7 +230,6 @@ type VideoControlsProps = { function VideoControls({ video, isPlaying, - volume, show, controlsOpen, setControlsOpen, @@ -300,18 +291,19 @@ function VideoControls({ // volume control - const [showVolume, setShowVolume] = useState(false); const VolumeIcon = useMemo(() => { - if (volume == 0) { + if (!video || video?.muted) { return MdVolumeOff; - } else if (volume <= 0.33) { + } else if (video.volume <= 0.33) { return MdVolumeMute; - } else if (volume <= 0.67) { + } else if (video.volume <= 0.67) { return MdVolumeDown; } else { return MdVolumeUp; } - }, [volume]); + // only update when specific fields change + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [video?.volume, video?.muted]); if (!video || !show) { return; @@ -324,24 +316,18 @@ function VideoControls({
{ + onClick={(e: React.MouseEvent) => { e.stopPropagation(); - if (volume == 0) { - setShowVolume(true); - video.volume = 1; - } else { - setShowVolume(false); - video.volume = 0; - } + video.muted = !video.muted; }} /> - {showVolume && ( + {video.muted == false && ( (video.volume = value[0])} /> )}