import { Suspense, useState } from 'react'; import { lazyNamed } from '../lib/lazy'; import { TopBar } from '../components/TopBar'; import { DashboardPage } from '../pages/DashboardPage'; import { useWebsocket } from '../hooks/useWebsocket'; // Focus mode carries the gesture/animation code: load it only when used. const FocusPage = lazyNamed(() => import('../pages/FocusPage'), 'FocusPage'); export function RootLayout() { const [selectedFeedId, setSelectedFeedId] = useState(null); const [isFocusMode, setIsFocusMode] = useState(false); // One socket for the whole session (not per page mount). useWebsocket(); return (
Aller au contenu {!isFocusMode && ( setIsFocusMode(true)} /> )}
{/* Kept mounted in focus mode so the list keeps its scroll position. */}
{isFocusMode && (
} > setIsFocusMode(false)} />
)}
); }