import * as Popover from '@radix-ui/react-popover'; import type { Assistant, AssistantCreateParams } from 'librechat-data-provider'; import type { UseMutationResult } from '@tanstack/react-query'; import { Dialog, DialogTrigger, Label } from '~/components/ui'; import DialogTemplate from '~/components/ui/DialogTemplate'; import { useDeleteAssistantMutation } from '~/data-provider'; import { useLocalize, useSetIndexOptions } from '~/hooks'; import { cn, removeFocusOutlines } from '~/utils/'; import { NewTrashIcon } from '~/components/svg'; import { useChatContext } from '~/Providers'; export default function ContextButton({ activeModel, assistant_id, setCurrentAssistantId, createMutation, }: { activeModel: string; assistant_id: string; setCurrentAssistantId: React.Dispatch>; createMutation: UseMutationResult; }) { const localize = useLocalize(); const { conversation } = useChatContext(); const { setOption } = useSetIndexOptions(); const deleteAssistant = useDeleteAssistantMutation({ onSuccess: (_, vars, context) => { const updatedList = context as Assistant[] | undefined; if (!updatedList) { return; } if (createMutation.data?.id) { 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); }, }); if (!assistant_id) { return null; } return (
{localize('com_ui_delete') + ' ' + localize('com_ui_assistant')}
} selection={{ selectHandler: () => deleteAssistant.mutate({ assistant_id, model: activeModel }), selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white', selectText: localize('com_ui_delete'), }} />
); }