From 3a50dd4b8e74fac3083108d79986a92307a3da04 Mon Sep 17 00:00:00 2001 From: Romain Le Quellec Date: Wed, 20 Jan 2021 17:28:29 +0100 Subject: [PATCH 1/2] allow stop test speaker --- src/renderer/settings/TestSpeakersButton.tsx | 24 +++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/renderer/settings/TestSpeakersButton.tsx b/src/renderer/settings/TestSpeakersButton.tsx index 7f6c36a4..9f1a4979 100644 --- a/src/renderer/settings/TestSpeakersButton.tsx +++ b/src/renderer/settings/TestSpeakersButton.tsx @@ -16,22 +16,25 @@ const useStyles = makeStyles(() => ({ }, })); +const audio = new Audio() as ExtendedAudioElement; +audio.src = chime; + const TestSpeakersButton: React.FC = ({ speaker, }: TestSpeakersProps) => { const classes = useStyles(); const [playing, setPlaying] = useState(false); - const testSpeakers = () => { - const audio = new Audio() as ExtendedAudioElement; - audio.src = chime; + if (speaker.toLowerCase() !== 'default') audio.setSinkId(speaker); - if (speaker.toLowerCase() !== 'default') audio.setSinkId(speaker); - - audio.play(); - setPlaying(true); - audio.addEventListener('pause', () => { + const testSpeakers = () => { + if (playing) { + audio.pause(); + audio.currentTime = 0; setPlaying(false); - }); + } else { + audio.play(); + setPlaying(true); + } }; return ( @@ -41,9 +44,8 @@ const TestSpeakersButton: React.FC = ({ size="small" className={classes.button} onClick={testSpeakers} - disabled={playing} > - Test Speaker + {playing ? 'Stop Test Speaker' : 'Test speaker'} ); }; From 0e849990a28b595b95373b55e550387e3e95b761 Mon Sep 17 00:00:00 2001 From: Romain Le Quellec Date: Thu, 28 Jan 2021 13:31:45 +0100 Subject: [PATCH 2/2] fix audio onended setPlaying to false --- src/renderer/settings/TestSpeakersButton.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/renderer/settings/TestSpeakersButton.tsx b/src/renderer/settings/TestSpeakersButton.tsx index 9f1a4979..73146c00 100644 --- a/src/renderer/settings/TestSpeakersButton.tsx +++ b/src/renderer/settings/TestSpeakersButton.tsx @@ -35,6 +35,10 @@ const TestSpeakersButton: React.FC = ({ audio.play(); setPlaying(true); } + + audio.onended = () => { + setPlaying(false); + }; }; return (