import { useFormContext } from 'react-hook-form'; import { Label, Button, OGDialog, TrashIcon, useToastContext, OGDialogTrigger, OGDialogTemplate, } from '@librechat/client'; import type { Agent, AgentCreateParams } from 'librechat-data-provider'; import type { UseMutationResult } from '@tanstack/react-query'; import { logger, getDefaultAgentFormValues } from '~/utils'; import { useLocalize, useSetIndexOptions } from '~/hooks'; import { useDeleteAgentMutation } from '~/data-provider'; import { useChatContext } from '~/Providers'; import { isEphemeralAgent } from '~/common'; export default function DeleteButton({ agent_id, setCurrentAgentId, createMutation, }: { agent_id: string; setCurrentAgentId: React.Dispatch>; createMutation: UseMutationResult; }) { const localize = useLocalize(); const { reset } = useFormContext(); const { showToast } = useToastContext(); const { conversation } = useChatContext(); const { setOption } = useSetIndexOptions(); const deleteAgent = useDeleteAgentMutation({ onSuccess: (_, vars, context) => { const updatedList = context as Agent[] | undefined; if (!updatedList) { return; } showToast({ message: localize('com_ui_agent_deleted'), status: 'success', }); if (createMutation.data?.id ?? '') { logger.log('agents', 'resetting createMutation'); createMutation.reset(); } const firstAgent = updatedList[0] as Agent | undefined; if (!firstAgent) { setCurrentAgentId(undefined); reset(getDefaultAgentFormValues()); return setOption('agent_id')(''); } if (vars.agent_id === conversation?.agent_id) { setOption('model')(''); return setOption('agent_id')(firstAgent.id); } const currentAgent = updatedList.find((agent) => agent.id === conversation?.agent_id); if (currentAgent) { setCurrentAgentId(currentAgent.id); } setCurrentAgentId(firstAgent.id); }, onError: (error) => { console.error(error); showToast({ message: localize('com_ui_agent_delete_error'), status: 'error', }); }, }); if (isEphemeralAgent(agent_id)) { return null; } return (
} selection={{ selectHandler: () => deleteAgent.mutate({ agent_id }), selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white', selectText: localize('com_ui_delete'), }} />
); }