import { Link } from 'lucide-react'; import { useRecoilValue } from 'recoil'; import { QueryKeys } from 'librechat-data-provider'; import { useQueryClient } from '@tanstack/react-query'; import type { TMessage, TConversation } from 'librechat-data-provider'; import type { InfiniteData } from '@tanstack/react-query'; import type { ConversationCursorData } from '~/utils'; import { useLocalize, useNavigateToConvo } from '~/hooks'; import { findConversationInInfinite } from '~/utils'; import store from '~/store'; export default function SearchButtons({ message }: { message: TMessage }) { const localize = useLocalize(); const queryClient = useQueryClient(); const search = useRecoilValue(store.search); const { navigateToConvo } = useNavigateToConvo(); const conversationId = message.conversationId ?? ''; const clickHandler = async (event: React.MouseEvent) => { event.preventDefault(); if (!conversationId) { return; } let title = message.title ?? ''; let cachedConvo = queryClient.getQueryData([ QueryKeys.conversation, conversationId, ]); const convos = queryClient.getQueryData>([ QueryKeys.allConversations, { search: search.debouncedQuery }, ]); if (!cachedConvo && convos) { cachedConvo = findConversationInInfinite(convos, conversationId); } if (!title) { title = cachedConvo?.title ?? ''; } document.title = title; navigateToConvo( cachedConvo ?? ({ conversationId, title, } as TConversation), { resetLatestMessage: true }, ); }; if (!conversationId) { return null; } return (
); }