mirror of
https://github.com/stackblitz/bolt.new
synced 2025-02-06 12:57:04 +00:00
Clear speech to text, listening upon submission
This commit is contained in:
parent
36b7d94bdd
commit
a896f3f312
@ -145,6 +145,7 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
const [modelList, setModelList] = useState(MODEL_LIST);
|
const [modelList, setModelList] = useState(MODEL_LIST);
|
||||||
const [isListening, setIsListening] = useState(false);
|
const [isListening, setIsListening] = useState(false);
|
||||||
const [recognition, setRecognition] = useState<SpeechRecognition | null>(null);
|
const [recognition, setRecognition] = useState<SpeechRecognition | null>(null);
|
||||||
|
const [transcript, setTranscript] = useState('');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Load API keys from cookies on component mount
|
// Load API keys from cookies on component mount
|
||||||
@ -177,6 +178,9 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
.map(result => result.transcript)
|
.map(result => result.transcript)
|
||||||
.join('');
|
.join('');
|
||||||
|
|
||||||
|
setTranscript(transcript);
|
||||||
|
|
||||||
|
|
||||||
if (handleInputChange) {
|
if (handleInputChange) {
|
||||||
const syntheticEvent = {
|
const syntheticEvent = {
|
||||||
target: { value: transcript },
|
target: { value: transcript },
|
||||||
@ -208,6 +212,25 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleSendMessage = (event: React.UIEvent, messageInput?: string) => {
|
||||||
|
if (sendMessage) {
|
||||||
|
sendMessage(event, messageInput);
|
||||||
|
if (recognition) {
|
||||||
|
recognition.abort(); // Stop current recognition
|
||||||
|
setTranscript(''); // Clear transcript
|
||||||
|
setIsListening(false);
|
||||||
|
|
||||||
|
// Clear the input by triggering handleInputChange with empty value
|
||||||
|
if (handleInputChange) {
|
||||||
|
const syntheticEvent = {
|
||||||
|
target: { value: '' },
|
||||||
|
} as React.ChangeEvent<HTMLTextAreaElement>;
|
||||||
|
handleInputChange(syntheticEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const updateApiKey = (provider: string, key: string) => {
|
const updateApiKey = (provider: string, key: string) => {
|
||||||
try {
|
try {
|
||||||
const updatedApiKeys = { ...apiKeys, [provider]: key };
|
const updatedApiKeys = { ...apiKeys, [provider]: key };
|
||||||
@ -301,8 +324,11 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
if (isStreaming) {
|
||||||
sendMessage?.(event);
|
handleStop?.();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
handleSendMessage?.(event);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
value={input}
|
value={input}
|
||||||
@ -327,7 +353,7 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMessage?.(event);
|
handleSendMessage?.(event);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
@ -384,7 +410,11 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
|
|||||||
<button
|
<button
|
||||||
key={index}
|
key={index}
|
||||||
onClick={(event) => {
|
onClick={(event) => {
|
||||||
sendMessage?.(event, examplePrompt.text);
|
if (isStreaming) {
|
||||||
|
handleStop?.();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
handleSendMessage?.(event, examplePrompt.text);
|
||||||
}}
|
}}
|
||||||
className="group flex items-center w-full gap-2 justify-center bg-transparent text-bolt-elements-textTertiary hover:text-bolt-elements-textPrimary transition-theme"
|
className="group flex items-center w-full gap-2 justify-center bg-transparent text-bolt-elements-textTertiary hover:text-bolt-elements-textPrimary transition-theme"
|
||||||
>
|
>
|
||||||
|
@ -6,7 +6,7 @@ export const WORK_DIR = `/home/${WORK_DIR_NAME}`;
|
|||||||
export const MODIFICATIONS_TAG_NAME = 'bolt_file_modifications';
|
export const MODIFICATIONS_TAG_NAME = 'bolt_file_modifications';
|
||||||
export const MODEL_REGEX = /^\[Model: (.*?)\]\n\n/;
|
export const MODEL_REGEX = /^\[Model: (.*?)\]\n\n/;
|
||||||
export const PROVIDER_REGEX = /\[Provider: (.*?)\]\n\n/;
|
export const PROVIDER_REGEX = /\[Provider: (.*?)\]\n\n/;
|
||||||
export const DEFAULT_MODEL = 'claude-3-5-sonnet-latest';
|
export const DEFAULT_MODEL = 'qwen2.5-coder:32b';
|
||||||
|
|
||||||
const PROVIDER_LIST: ProviderInfo[] = [
|
const PROVIDER_LIST: ProviderInfo[] = [
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user