import { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import Sidebar from '../sidebar/view/Sidebar'; import MainContent from '../main-content/view/MainContent'; import MobileNav from '../MobileNav'; import { useWebSocket } from '../../contexts/WebSocketContext'; import { useDeviceSettings } from '../../hooks/useDeviceSettings'; import { useSessionProtection } from '../../hooks/useSessionProtection'; import { useProjectsState } from '../../hooks/useProjectsState'; export default function AppContent() { const navigate = useNavigate(); const { sessionId } = useParams<{ sessionId?: string }>(); const { t } = useTranslation('common'); const { isMobile } = useDeviceSettings({ trackPWA: false }); const { ws, sendMessage, latestMessage } = useWebSocket(); const { activeSessions, processingSessions, markSessionAsActive, markSessionAsInactive, markSessionAsProcessing, markSessionAsNotProcessing, replaceTemporarySession, } = useSessionProtection(); const { selectedProject, selectedSession, activeTab, sidebarOpen, isLoadingProjects, isInputFocused, externalMessageUpdate, setActiveTab, setSidebarOpen, setIsInputFocused, setShowSettings, openSettings, fetchProjects, sidebarSharedProps, } = useProjectsState({ sessionId, navigate, latestMessage, isMobile, activeSessions, }); useEffect(() => { window.refreshProjects = fetchProjects; return () => { if (window.refreshProjects === fetchProjects) { delete window.refreshProjects; } }; }, [fetchProjects]); useEffect(() => { window.openSettings = openSettings; return () => { if (window.openSettings === openSettings) { delete window.openSettings; } }; }, [openSettings]); return (