import type { Agent, AgentCreateParams } from 'librechat-data-provider'; import type { UseMutationResult } from '@tanstack/react-query'; import { OGDialog, OGDialogTrigger, Label } from '~/components/ui'; import { useChatContext, useToastContext } from '~/Providers'; import OGDialogTemplate from '~/components/ui/OGDialogTemplate'; import { useLocalize, useSetIndexOptions } from '~/hooks'; import { cn, removeFocusOutlines, logger } from '~/utils'; import { useDeleteAgentMutation } from '~/data-provider'; import { TrashIcon } from '~/components/svg'; export default function DeleteButton({ agent_id, setCurrentAgentId, createMutation, }: { agent_id: string; setCurrentAgentId: React.Dispatch>; createMutation: UseMutationResult; }) { const localize = useLocalize(); 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) { 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 (!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'), }} />
); }