import React, { useCallback, useState } from 'react'; import { NewChatIcon } from '../../assets/icons'; import { WPAssistantLogo } from '../Logos/WPAssistantLogo'; import ConversationGroup from './ConversationGroup'; import { useTheme } from '../../contexts/ThemeContext'; import useGroupedConversations from '../../hooks/useGroupedConversations'; import { useAuth } from '../../contexts/AuthContext'; import { useCurrentConversationId, useConversations, useSetCurrentConversationId, } from '../../contexts/ChatContext'; import { useSetIsLoginModalOpen, useSetIsConfirmDeleteModalOpen, useSetConfirmDeleteConversationId, useSetConfirmDeleteConversationName, useSetIsSettingsModalOpen } from '../../contexts/UIContext'; import useRenderTracker from '../../hooks/useRenderTracker'; import QuickLinks from './QuickLinks'; import { IS_WORDPRESS } from '../../constants'; const Sidebar: React.FC = () => { const setIsLoginModalOpen = useSetIsLoginModalOpen(); const setIsConfirmDeleteModalOpen = useSetIsConfirmDeleteModalOpen(); const setConfirmDeleteConversationId = useSetConfirmDeleteConversationId(); const setIsSettingsModalOpen = useSetIsSettingsModalOpen(); const setConfirmDeleteConversationName = useSetConfirmDeleteConversationName(); const { effectiveTheme, setTheme } = useTheme(); const { isLoggedIn } = useAuth(); const currentConversationId = useCurrentConversationId(); const setCurrentConversationId = useSetCurrentConversationId(); const conversations = useConversations(); const groupedConversations = useGroupedConversations({ conversations }); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); useRenderTracker('Sidebar', { setIsLoginModalOpen, setIsConfirmDeleteModalOpen, setConfirmDeleteConversationId, setIsSettingsModalOpen, setConfirmDeleteConversationName, effectiveTheme, setTheme, isLoggedIn, conversations, groupedConversations, currentConversationId, setCurrentConversationId, }); const toggleSidebar = useCallback(() => { setIsSidebarCollapsed((prev) => !prev); }, [setIsSidebarCollapsed]); const handleNewChat = useCallback(() => { setCurrentConversationId(null); }, [setCurrentConversationId, currentConversationId]); const handleSelectConversation = useCallback( (conversationId: string) => { setCurrentConversationId(conversationId); }, [setCurrentConversationId] ); const onDeleteConversation = useCallback( (conversationName: string, conversationId: string) => { setConfirmDeleteConversationName(conversationName); setConfirmDeleteConversationId(conversationId); setIsConfirmDeleteModalOpen(true); }, [ setConfirmDeleteConversationName, setConfirmDeleteConversationId, setIsConfirmDeleteModalOpen, ] ); return (