From 05306c2d3d8687d0b8446fe01e14a1eecaca1162 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Mon, 24 May 2021 09:30:50 -0700 Subject: [PATCH] Handle `durationchange` events in MessageAudio --- ts/components/conversation/MessageAudio.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ts/components/conversation/MessageAudio.tsx b/ts/components/conversation/MessageAudio.tsx index 95378d4f67..8b67937906 100644 --- a/ts/components/conversation/MessageAudio.tsx +++ b/ts/components/conversation/MessageAudio.tsx @@ -268,14 +268,24 @@ export const MessageAudio: React.FC = (props: Props) => { audio.currentTime = currentTime; }; + const onDurationChange = () => { + window.log.info('MessageAudio: `durationchange` event', id); + + if (!Number.isNaN(audio.duration)) { + setDuration(Math.max(audio.duration, 1e-23)); + } + }; + audio.addEventListener('timeupdate', onTimeUpdate); audio.addEventListener('ended', onEnded); audio.addEventListener('loadedmetadata', onLoadedMetadata); + audio.addEventListener('durationchange', onDurationChange); return () => { audio.removeEventListener('timeupdate', onTimeUpdate); audio.removeEventListener('ended', onEnded); audio.removeEventListener('loadedmetadata', onLoadedMetadata); + audio.removeEventListener('durationchange', onDurationChange); }; }, [id, audio, isActive, currentTime]);