From 9fe06e66aa5b23cf3e32b7ae4c9daa58f309ff14 Mon Sep 17 00:00:00 2001 From: lynchee-owo Date: Thu, 14 Mar 2024 15:41:11 -0400 Subject: [PATCH] feat: added audio mode switch --- src/common/TaskUI.tsx | 24 ++++++++++++++++++++++-- src/common/VoiceButton.tsx | 20 ++++++++++++-------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/common/TaskUI.tsx b/src/common/TaskUI.tsx index 685e51a..5507a7f 100644 --- a/src/common/TaskUI.tsx +++ b/src/common/TaskUI.tsx @@ -1,5 +1,14 @@ -import { Button, HStack, Spacer, Textarea, useToast } from "@chakra-ui/react"; import React, { useCallback, useState } from "react"; +import { + Button, + HStack, + Spacer, + Textarea, + useToast, + Switch, + FormControl, + FormLabel, +} from "@chakra-ui/react"; import { debugMode } from "../constants"; import { useAppState } from "../state/store"; import RunTaskButton from "./RunTaskButton"; @@ -51,6 +60,7 @@ const TaskUI = () => { instructions: state.ui.instructions, setInstructions: state.ui.actions.setInstructions, })); + const [audioMode, setAudioMode] = useState(false); const taskInProgress = state.taskStatus === "running"; @@ -98,9 +108,19 @@ const TaskUI = () => { mb={2} onKeyDown={onKeyDown} /> + + + Audio Mode + + setAudioMode(e.target.checked)} + /> + - + {debugMode && } diff --git a/src/common/VoiceButton.tsx b/src/common/VoiceButton.tsx index 31d89dc..268347a 100644 --- a/src/common/VoiceButton.tsx +++ b/src/common/VoiceButton.tsx @@ -3,21 +3,24 @@ import { Button, HStack, Icon } from "@chakra-ui/react"; import { BsPlayFill, BsStopFill } from "react-icons/bs"; import { voiceControl } from "../helpers/voiceControl"; -export default function VoiceButton() { +export default function VoiceButton(props: { audioMode: boolean }) { const [isListening, setIsListening] = useState(false); const toggleVoiceControl = () => { - if (!isListening) { - voiceControl.startListening(); - } else { - voiceControl.stopListening(); + if (props.audioMode) { + if (!isListening) { + voiceControl.startListening(); + } else { + voiceControl.stopListening(); + } + setIsListening(!isListening); } - setIsListening(!isListening); }; useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { - if (event.code === "Space") { + // Only toggle voice control if audioMode is true + if (event.code === "Space" && props.audioMode) { event.preventDefault(); toggleVoiceControl(); } @@ -28,7 +31,7 @@ export default function VoiceButton() { return () => { window.removeEventListener("keydown", handleKeyDown); }; - }, [isListening]); + }, [isListening, props.audioMode]); const button = (