import React, { useState, useEffect, useCallback } from 'react'; import { StopGeneratingIcon } from '~/components'; import { Settings } from 'lucide-react'; import { SetKeyDialog } from './SetKeyDialog'; import { useUserKey, useLocalize } from '~/hooks'; export default function SubmitButton({ conversation, submitMessage, handleStopGenerating, disabled, isSubmitting, userProvidesKey, }) { const { endpoint } = conversation; const [isDialogOpen, setDialogOpen] = useState(false); const { checkExpiry } = useUserKey(endpoint); const [isKeyProvided, setKeyProvided] = useState(userProvidesKey ? checkExpiry() : true); const isKeyActive = checkExpiry(); const localize = useLocalize(); useEffect(() => { if (userProvidesKey) { setKeyProvided(isKeyActive); } else { setKeyProvided(true); } }, [checkExpiry, endpoint, userProvidesKey, isKeyActive]); const clickHandler = useCallback( (e: React.MouseEvent) => { e.preventDefault(); submitMessage(); }, [submitMessage], ); const setKey = useCallback(() => { setDialogOpen(true); }, []); if (isSubmitting) { return ( ); } else if (!isKeyProvided) { return ( <> {userProvidesKey && ( )} ); } else { return ( ); } } { /*
··
*/ }