// SPDX-License-Identifier: MIT // Copyright contributors to the openassistant project import { useEffect, useState } from 'react'; import { Button } from '@heroui/react'; import { Icon } from '@iconify/react'; import { useAudioRecorder } from 'react-audio-voice-recorder'; export default function VoiceChatButton({ onRecordingComplete, }: { onRecordingComplete: (voice: Blob) => Promise; }) { const [shouldSave, setShouldSave] = useState(false); const { isRecording, recordingBlob, startRecording, stopRecording } = useAudioRecorder( { noiseSuppression: true, echoCancellation: true }, (err) => console.table(err) // onNotAllowedOrFound ); const [recording, setRecording] = useState(isRecording); const onTalkClicked = async () => { if (recording) { stopRecording(); setShouldSave(true); setRecording(false); } else { startRecording(); setRecording(true); } }; useEffect(() => { if (shouldSave && recordingBlob) { onRecordingComplete(recordingBlob); setShouldSave(false); } }, [onRecordingComplete, recordingBlob, shouldSave]); return ( ); }