diff --git a/client/src/components/Input/SubmitButton.jsx b/client/src/components/Input/SubmitButton.jsx index de31c47809..2da091359d 100644 --- a/client/src/components/Input/SubmitButton.jsx +++ b/client/src/components/Input/SubmitButton.jsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { ListeningIcon, StopGeneratingIcon } from '~/components'; import { Settings } from 'lucide-react'; import { SetTokenDialog } from './SetTokenDialog'; @@ -17,6 +17,7 @@ export default function SubmitButton({ const { getToken } = store.useToken(endpoint); const isTokenProvided = endpointsConfig?.[endpoint]?.userProvide ? !!getToken() : true; + const [countdown, setCountdown] = useState(0); const endpointsToHideSetTokens = new Set(['openAI', 'azureOpenAI', 'bingAI']); const clickHandler = (e) => { @@ -28,6 +29,21 @@ export default function SubmitButton({ setSetTokenDialogOpen(true); }; + useEffect(() => { + let timer; + if (isListening) { + setCountdown(3); + timer = setInterval(() => { + setCountdown(prev => (prev > 1 ? prev - 1 : 0)); + }, 1000); + } else { + setCountdown(0); + } + return () => { + if (timer) clearInterval(timer); + }; + }, [isListening]); + if (isSubmitting) { return ( );