import { useMemo, useState, useCallback } from 'react'; import { MessageCircle, ArchiveRestore } from 'lucide-react'; import { useConversationsInfiniteQuery } from '~/data-provider'; import { ConversationListResponse } from 'librechat-data-provider'; import { useAuthContext, useLocalize, useNavScrolling, useArchiveHandler } from '~/hooks'; import { DeleteButton } from '~/components/Conversations/ConvoOptions'; import { TooltipAnchor } from '~/components/ui'; import { Spinner } from '~/components/svg'; import { cn } from '~/utils'; export default function ArchivedChatsTable() { const localize = useLocalize(); const { isAuthenticated } = useAuthContext(); const [showLoading, setShowLoading] = useState(false); const [conversationId, setConversationId] = useState(null); const { data, fetchNextPage, hasNextPage, isFetchingNextPage } = useConversationsInfiniteQuery( { pageNumber: '1', isArchived: true }, { enabled: isAuthenticated }, ); const { containerRef, moveToTop } = useNavScrolling({ setShowLoading, hasNextPage: hasNextPage, fetchNextPage: fetchNextPage, isFetchingNextPage: isFetchingNextPage, }); const conversations = useMemo( () => data?.pages.flatMap((page) => page.conversations) || [], [data], ); const archiveHandler = useArchiveHandler(conversationId ?? '', false, moveToTop); if (!data || conversations.length === 0) { return
{localize('com_nav_archived_chats_empty')}
; } return (
{conversations.map((conversation) => { if (!conversation.conversationId) { return null; } return ( ); })}
{localize('com_nav_archive_name')} {localize('com_nav_archive_created_at')}
{conversation.title}
{new Date(conversation.createdAt).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric', })}
{ setConversationId(conversation.conversationId); archiveHandler(); }} className="cursor-pointer hover:text-black dark:hover:text-white" >
{(isFetchingNextPage || showLoading) && ( )}
); }