| import { useState, useCallback } from 'react'; | |
| import { EModelEndpoint } from 'librechat-data-provider'; | |
| export const useKeyDialog = () => { | |
| const [keyDialogOpen, setKeyDialogOpen] = useState(false); | |
| const [keyDialogEndpoint, setKeyDialogEndpoint] = useState<EModelEndpoint | null>(null); | |
| const handleOpenKeyDialog = useCallback( | |
| (ep: EModelEndpoint, e: React.MouseEvent | React.KeyboardEvent) => { | |
| e.preventDefault(); | |
| e.stopPropagation(); | |
| setKeyDialogEndpoint(ep); | |
| setKeyDialogOpen(true); | |
| }, | |
| [], | |
| ); | |
| const onOpenChange = (open: boolean) => { | |
| if (!open && keyDialogEndpoint) { | |
| const button = document.getElementById(`endpoint-${keyDialogEndpoint}-settings`); | |
| if (button) { | |
| setTimeout(() => { | |
| button.focus(); | |
| }, 5); | |
| } | |
| } | |
| setKeyDialogOpen(open); | |
| }; | |
| return { | |
| keyDialogOpen, | |
| keyDialogEndpoint, | |
| onOpenChange, | |
| handleOpenKeyDialog, | |
| }; | |
| }; | |
| export default useKeyDialog; | |