import React, { useCallback } 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, useIsMobileSidebarOpen, useSetIsMobileSidebarOpen, } from '../../contexts/UIContext'; import useRenderTracker from '../../hooks/useRenderTracker'; import QuickLinks from './QuickLinks'; import { TARGET_ENV, IS_WORDPRESS } from '../../constants'; const MobileSidebar: 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 isMobileSidebarOpen = useIsMobileSidebarOpen(); const setIsMobileSidebarOpen = useSetIsMobileSidebarOpen(); useRenderTracker('MobileSidebar'); const handleNewChat = useCallback(() => { setCurrentConversationId(null); setIsMobileSidebarOpen(false); }, [setCurrentConversationId, setIsMobileSidebarOpen]); const handleSelectConversation = useCallback( (conversationId: string) => { setCurrentConversationId(conversationId); setIsMobileSidebarOpen(false); }, [setCurrentConversationId, setIsMobileSidebarOpen] ); const onDeleteConversation = useCallback( (conversationName: string, conversationId: string) => { setConfirmDeleteConversationName(conversationName); setConfirmDeleteConversationId(conversationId); setIsConfirmDeleteModalOpen(true); setIsMobileSidebarOpen(false); }, [ setConfirmDeleteConversationName, setConfirmDeleteConversationId, setIsConfirmDeleteModalOpen, setIsMobileSidebarOpen, ] ); return ( <> {/* Overlay */} {isMobileSidebarOpen && (
setIsMobileSidebarOpen(false)} /> )} {/* Sidebar */} ); }; export default React.memo(MobileSidebar);