in components/app.tsx [120:148]
async function startRecording() {
try {
const newStream = await navigator.mediaDevices.getUserMedia({
audio: true,
});
setAudioStream(newStream);
// If we already have an audioSender, just replace its track:
if (tracks.current) {
const micTrack = newStream.getAudioTracks()[0];
tracks.current.forEach((sender) => {
sender.replaceTrack(micTrack);
});
} else if (peerConnection.current) {
// Fallback if audioSender somehow didn't get set
newStream.getTracks().forEach((track) => {
const sender = peerConnection.current?.addTrack(track, newStream);
if (sender) {
tracks.current = [...(tracks.current || []), sender];
}
});
}
setIsListening(true);
console.log("Microphone started.");
} catch (error) {
console.error("Error accessing microphone:", error);
}
}