import { Dialog, DialogTrigger, Label, DialogTemplate, useToastContext, TrashIcon, } from '@librechat/client'; import type { Assistant, AssistantCreateParams, AssistantsEndpoint } from 'librechat-data-provider'; import type { UseMutationResult } from '@tanstack/react-query'; import { useDeleteAssistantMutation } from '~/data-provider'; import { useLocalize, useSetIndexOptions } from '~/hooks'; import { cn, removeFocusOutlines } from '~/utils'; import { useChatContext } from '~/Providers'; export default function ContextButton({ activeModel, assistant_id, setCurrentAssistantId, createMutation, endpoint, }: { activeModel?: string; assistant_id: string; setCurrentAssistantId: React.Dispatch>; createMutation: UseMutationResult; endpoint: AssistantsEndpoint; }) { const localize = useLocalize(); const { showToast } = useToastContext(); const { conversation } = useChatContext(); const { setOption } = useSetIndexOptions(); const deleteAssistant = useDeleteAssistantMutation({ onSuccess: (_, vars, context) => { const updatedList = context as Assistant[] | undefined; if (!updatedList) { return; } showToast({ message: localize('com_ui_assistant_deleted'), status: 'success', }); if (createMutation.data?.id !== undefined) { console.log('[deleteAssistant] resetting createMutation'); createMutation.reset(); } const firstAssistant = updatedList[0] as Assistant | undefined; if (!firstAssistant) { return setOption('assistant_id')(''); } if (vars.assistant_id === conversation?.assistant_id) { return setOption('assistant_id')(firstAssistant.id); } const currentAssistant = updatedList.find( (assistant) => assistant.id === conversation?.assistant_id, ); if (currentAssistant) { setCurrentAssistantId(currentAssistant.id); } setCurrentAssistantId(firstAssistant.id); }, onError: (error) => { console.error(error); showToast({ message: localize('com_ui_assistant_delete_error'), status: 'error', }); }, }); if (!assistant_id) { return null; } if (activeModel?.length === 0 || activeModel === undefined) { return null; } return (
} selection={{ selectHandler: () => deleteAssistant.mutate({ assistant_id, model: activeModel, endpoint }), selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white', selectText: localize('com_ui_delete'), }} />
); }