| |
| import { useRef, useState, useCallback } from 'react'; |
| import { useForm } from 'react-hook-form'; |
| import type { ApiKeyFormData } from '~/common'; |
| import useAuthCodeTool from '~/hooks/Plugins/useAuthCodeTool'; |
|
|
| export default function useCodeApiKeyForm({ |
| onSubmit, |
| onRevoke, |
| }: { |
| onSubmit?: () => void; |
| onRevoke?: () => void; |
| }) { |
| const methods = useForm<ApiKeyFormData>(); |
| const menuTriggerRef = useRef<HTMLButtonElement>(null); |
| const badgeTriggerRef = useRef<HTMLInputElement>(null); |
| const [isDialogOpen, setIsDialogOpen] = useState(false); |
| const { installTool, removeTool } = useAuthCodeTool({ isEntityTool: true }); |
| const { reset } = methods; |
|
|
| const onSubmitHandler = useCallback( |
| (data: { apiKey: string }) => { |
| reset(); |
| installTool(data.apiKey); |
| setIsDialogOpen(false); |
| onSubmit?.(); |
| }, |
| [onSubmit, reset, installTool], |
| ); |
|
|
| const handleRevokeApiKey = useCallback(() => { |
| reset(); |
| removeTool(); |
| setIsDialogOpen(false); |
| onRevoke?.(); |
| }, [reset, onRevoke, removeTool]); |
|
|
| return { |
| methods, |
| isDialogOpen, |
| setIsDialogOpen, |
| handleRevokeApiKey, |
| onSubmit: onSubmitHandler, |
| badgeTriggerRef, |
| menuTriggerRef, |
| }; |
| } |
|
|