diff --git a/client/Dockerfile b/client/Dockerfile index ac132cf..7b8deb4 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -29,4 +29,4 @@ EXPOSE 80 # Health check to verify Nginx is actively running HEALTHCHECK --interval=30s --timeout=5s --start-period=3s --retries=3 \ - CMD wget --no-verbose --tries=1 --spider http://localhost:80/ || exit 1 + CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:80/ || exit 1 diff --git a/client/src/components/LiveVoiceCapture.tsx b/client/src/components/LiveVoiceCapture.tsx index 513d636..2982590 100644 --- a/client/src/components/LiveVoiceCapture.tsx +++ b/client/src/components/LiveVoiceCapture.tsx @@ -61,7 +61,12 @@ export default function LiveVoiceCapture({ } } - el.addEventListener('loadedmetadata', handleLoadedMetadata) + if (el.readyState >= 1) { + handleLoadedMetadata() + } else { + el.addEventListener('loadedmetadata', handleLoadedMetadata) + } + return () => { el.removeEventListener('loadedmetadata', handleLoadedMetadata) } @@ -161,16 +166,18 @@ export default function LiveVoiceCapture({ VOICE_MEMO_MAX_DURATION_SEC, Math.max(1, Math.round((Date.now() - startedAtRef.current) / 1000)) ) - const blob = new Blob(chunksRef.current, { type: resolvedMime }) - chunksRef.current = [] - stopStream() - try { - assertVoiceMemoBlobSize(blob) - finishRecording(blob, resolvedMime, durationSec) - } catch { - setMicError(t('logs.live_voice_too_large')) - setPhase('idle') - } + setTimeout(() => { + const blob = new Blob(chunksRef.current, { type: resolvedMime }) + chunksRef.current = [] + stopStream() + try { + assertVoiceMemoBlobSize(blob) + finishRecording(blob, resolvedMime, durationSec) + } catch { + setMicError(t('logs.live_voice_too_large')) + setPhase('idle') + } + }, 50) } recorder.onerror = () => { @@ -179,7 +186,7 @@ export default function LiveVoiceCapture({ } startedAtRef.current = Date.now() - recorder.start(200) + recorder.start() setPhase('recording') setElapsedSec(0) timerRef.current = window.setInterval(() => { diff --git a/client/src/components/VoiceMemoPlayer.tsx b/client/src/components/VoiceMemoPlayer.tsx index 910b80e..e3f249c 100644 --- a/client/src/components/VoiceMemoPlayer.tsx +++ b/client/src/components/VoiceMemoPlayer.tsx @@ -47,7 +47,12 @@ export default function VoiceMemoPlayer({ } } - el.addEventListener('loadedmetadata', handleLoadedMetadata) + if (el.readyState >= 1) { + handleLoadedMetadata() + } else { + el.addEventListener('loadedmetadata', handleLoadedMetadata) + } + return () => { el.removeEventListener('loadedmetadata', handleLoadedMetadata) }