From 9e0c4d4b2a45d7a207a99dd314ad8b7bc0fb5be0 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Wed, 26 Nov 2025 22:59:14 -0800 Subject: [PATCH] add additional checks on wavesurfer to prevent playback --- .../player/components/playerbar-waveform.tsx | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/renderer/features/player/components/playerbar-waveform.tsx b/src/renderer/features/player/components/playerbar-waveform.tsx index cfc680e21..56eb4d507 100644 --- a/src/renderer/features/player/components/playerbar-waveform.tsx +++ b/src/renderer/features/player/components/playerbar-waveform.tsx @@ -69,10 +69,18 @@ export const PlayerbarWaveform = () => { waveColor, }); - // Reset loading state when stream URL changes + // Reset loading state when stream URL changes and ensure media is muted useEffect(() => { setIsLoading(true); - }, [streamUrl]); + if (wavesurfer) { + wavesurfer.setVolume(0); + const mediaElement = wavesurfer.getMediaElement(); + if (mediaElement) { + mediaElement.muted = true; + mediaElement.volume = 0; + } + } + }, [streamUrl, wavesurfer]); // Handle waveform ready state useEffect(() => { @@ -80,6 +88,11 @@ export const PlayerbarWaveform = () => { const handleReady = () => { setIsLoading(false); + const mediaElement = wavesurfer.getMediaElement(); + if (mediaElement) { + mediaElement.muted = true; + mediaElement.volume = 0; + } }; wavesurfer.on('ready', handleReady); @@ -87,6 +100,11 @@ export const PlayerbarWaveform = () => { // Check if already loaded if (wavesurfer.getDuration() > 0) { setIsLoading(false); + const mediaElement = wavesurfer.getMediaElement(); + if (mediaElement) { + mediaElement.muted = true; + mediaElement.volume = 0; + } } return () => { @@ -98,8 +116,21 @@ export const PlayerbarWaveform = () => { if (!wavesurfer) return; // Ensure waveform never plays - it's just for visualization + wavesurfer.setVolume(0); + + const muteMediaElement = () => { + const mediaElement = wavesurfer.getMediaElement(); + if (mediaElement) { + mediaElement.muted = true; + mediaElement.volume = 0; + } + }; + + muteMediaElement(); + const preventPlay = () => { wavesurfer.pause(); + muteMediaElement(); // Ensure it stays muted }; wavesurfer.on('play', preventPlay);