import React, { useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { useCommunicationsStore } from './services/communicationsService'; import { CommunicationTab } from './types'; import { CommunicationsHeader } from './components/CommunicationsHeader'; import { MessengersView } from './components/MessengersView'; import { EmailView } from './components/EmailView'; import { ChannelsView } from './components/ChannelsView'; import { ContactsView } from './components/ContactsView'; import { SettingsView } from './components/SettingsView'; import { AddContactModal, ComposeEmailModal, ConnectChannelModal, CreateChannelModal, } from './components/Modals'; export function CommunicationsModule() { const [searchParams, setSearchParams] = useSearchParams(); const { activeTab, setActiveTab } = useCommunicationsStore(); const [isComposeEmailOpen, setIsComposeEmailOpen] = useState(false); const [isCreateChannelOpen, setIsCreateChannelOpen] = useState(false); const [isAddContactOpen, setIsAddContactOpen] = useState(false); const [isConnectChannelOpen, setIsConnectChannelOpen] = useState(false); // Sync tab with URL search param const urlTab = searchParams.get('tab') as CommunicationTab | null; const currentTab = urlTab && ['messengers', 'email', 'channels', 'contacts', 'settings'].includes(urlTab) ? urlTab : activeTab; const handleTabChange = (tab: CommunicationTab) => { setActiveTab(tab); setSearchParams({ tab }); }; return (
{/* Header */} setIsConnectChannelOpen(true)} unreadChats={48} unreadEmails={10} unreadChannels={4} /> {/* Body Views */}
{currentTab === 'messengers' && ( setIsConnectChannelOpen(true)} onOpenAddContactModal={() => setIsAddContactOpen(true)} /> )} {currentTab === 'email' && ( setIsComposeEmailOpen(true)} /> )} {currentTab === 'channels' && ( setIsCreateChannelOpen(true)} /> )} {currentTab === 'contacts' && ( setIsAddContactOpen(true)} /> )} {currentTab === 'settings' && }
{/* Modals */} setIsComposeEmailOpen(false)} /> setIsCreateChannelOpen(false)} /> setIsAddContactOpen(false)} /> setIsConnectChannelOpen(false)} />
); } export default CommunicationsModule;