| import { useCallback } from 'react'; | |
| import { useQueryClient } from '@tanstack/react-query'; | |
| import { AuthType, Tools, QueryKeys } from 'librechat-data-provider'; | |
| import { useUpdateUserPluginsMutation } from 'librechat-data-provider/react-query'; | |
| const useAuthCodeTool = (options?: { isEntityTool: boolean }) => { | |
| const queryClient = useQueryClient(); | |
| const isEntityTool = options?.isEntityTool ?? true; | |
| const updateUserPlugins = useUpdateUserPluginsMutation({ | |
| onMutate: (vars) => { | |
| queryClient.setQueryData([QueryKeys.toolAuth, Tools.execute_code], () => ({ | |
| authenticated: vars.action === 'install', | |
| message: AuthType.USER_PROVIDED, | |
| })); | |
| }, | |
| onSuccess: () => { | |
| queryClient.invalidateQueries([QueryKeys.toolAuth, Tools.execute_code]); | |
| }, | |
| onError: () => { | |
| queryClient.invalidateQueries([QueryKeys.toolAuth, Tools.execute_code]); | |
| }, | |
| }); | |
| const installTool = useCallback( | |
| (apiKey: string) => { | |
| updateUserPlugins.mutate({ | |
| pluginKey: Tools.execute_code, | |
| action: 'install', | |
| auth: { LIBRECHAT_CODE_API_KEY: apiKey }, | |
| isEntityTool, | |
| }); | |
| }, | |
| [updateUserPlugins, isEntityTool], | |
| ); | |
| const removeTool = useCallback(() => { | |
| updateUserPlugins.mutate({ | |
| pluginKey: Tools.execute_code, | |
| action: 'uninstall', | |
| auth: { LIBRECHAT_CODE_API_KEY: null }, | |
| isEntityTool, | |
| }); | |
| }, [updateUserPlugins, isEntityTool]); | |
| return { | |
| removeTool, | |
| installTool, | |
| }; | |
| }; | |
| export default useAuthCodeTool; | |