diff --git a/app/components/audioVisualizer.js b/app/components/audioVisualizer.js index bf541f42..eaf19e00 100644 --- a/app/components/audioVisualizer.js +++ b/app/components/audioVisualizer.js @@ -1,6 +1,6 @@ import React, { useRef, useEffect } from 'react'; -function AudioVisualizer() { +function AudioVisualizer(props) { const canvasRef = useRef(null); useEffect(() => { @@ -29,6 +29,8 @@ function AudioVisualizer() { analyser.getByteFrequencyData(dataArray); context.fillStyle = '#000'; context.fillRect(0, 0, canvas.width, canvas.height); + + for (let i = 0; i < bufferLength; i++) { barHeight = dataArray[i]; @@ -49,7 +51,10 @@ function AudioVisualizer() { return () => cancelAnimationFrame(animationFrameId); }, []); - return ; + return <> +

Is recording: {props.isRecording ? "true" : "false"}

+ + ; } export default AudioVisualizer; diff --git a/app/components/dashboard.js b/app/components/dashboard.js index 2454e71b..cbe74378 100644 --- a/app/components/dashboard.js +++ b/app/components/dashboard.js @@ -2,7 +2,7 @@ import { Mulberry32 } from '../utils.js' import React, { useState, useEffect } from 'react'; import AudioVisualizer from './audioVisualizer.js'; -export function Dashboard() +export function Dashboard(props) { const [openIndex, setOpenIndex] = useState(null); const [liveTranscript, setLiveTranscript] = useState(""); @@ -107,7 +107,15 @@ export function Dashboard() {liveTranscript} - + + + + ); diff --git a/app/page.js b/app/page.js index 4aafb260..0a26d0ce 100644 --- a/app/page.js +++ b/app/page.js @@ -11,24 +11,35 @@ const App = () => { const handleRecord = (recording) => { + console.log("handleRecord", recording); + setIsRecording(recording); setSplashScreen(false); + + if (recording) + { + navigator.mediaDevices.getUserMedia({ audio: true }) + .then(setStream) + .catch(err => console.error(err)); + } else if (!recording) { + if (stream) { + const tracks = stream.getTracks(); + tracks.forEach(track => track.stop()); + setStream(null); + } + + setIsRecording(false); + } }; const [stream, setStream] = useState(null); const serverData = useWebRTC(stream); console.log(serverData); - useEffect(() => { - navigator.mediaDevices.getUserMedia({ audio: true }) - .then(setStream) - .catch(err => console.error(err)); - }, []); - return (
{splashScreen && handleRecord(recording)} /> } - {!splashScreen && } + {!splashScreen && handleRecord(recording)} />}
);