Files
overleaf-cep/services/web/frontend/js/features/ide-react/components/layout/ide-page.tsx
T
Kristina b53bfbe8a4 [web] analytics for flaky connections (#35916)
* emit connection-restored events
* emit post-offline sync success/failure events

GitOrigin-RevId: 3fce5f328d726aeb5edf39f14239ef6e5bda2f99
2026-09-17 11:44:19 +00:00

45 lines
2.3 KiB
TypeScript

import { Alerts } from '@/features/ide-react/components/alerts/alerts'
import { useLayoutEventTracking } from '@/features/ide-react/hooks/use-layout-event-tracking'
import useSocketListeners from '@/features/ide-react/hooks/use-socket-listeners'
import { useEditingSessionHeartbeat } from '@/features/ide-react/hooks/use-editing-session-heartbeat'
import { useRegisterUserActivity } from '@/features/ide-react/hooks/use-register-user-activity'
import useConnectionOutageTracker from '@/features/ide-react/hooks/use-connection-outage-tracker'
import { useHasLintingError } from '@/features/ide-react/hooks/use-has-linting-error'
import { Modals } from '@/features/ide-react/components/modals/modals'
import { GlobalAlertsProvider } from '@/features/ide-react/context/global-alerts-context'
import { GlobalToasts } from '../global-toasts'
import EditorSurvey from '../editor-survey'
import { useFeatureFlag } from '@/shared/context/split-test-context'
import { useStatusFavicon } from '@/features/ide-react/hooks/use-status-favicon'
import useThemedPage from '@/shared/hooks/use-themed-page'
import MainLayout from '@/features/ide-react/components/layout/main-layout'
import SettingsModal from '@/features/ide-settings/components/settings-modal'
import CommandPalette from '@/features/command-palette/components/command-palette'
export default function IdePage() {
useLayoutEventTracking() // sent event when the layout changes
useSocketListeners() // listen for project-related websocket messages
useEditingSessionHeartbeat() // send a batched event when user is active
useRegisterUserActivity() // record activity and ensure connection when user is active
useConnectionOutageTracker() // track offline episodes and emit connection-restored
useHasLintingError() // pass editor:lint hasLintingError to the compiler
useStatusFavicon() // update the favicon based on the compile status
useThemedPage() // set the page theme based on user settings
const showEditorSurvey = useFeatureFlag('editor-popup-ux-survey-03-2026')
const showCommandPalette = useFeatureFlag('command-palette')
return (
<GlobalAlertsProvider>
<Alerts />
<Modals />
<SettingsModal />
<MainLayout />
<GlobalToasts />
{showCommandPalette && <CommandPalette />}
{showEditorSurvey && <EditorSurvey />}
</GlobalAlertsProvider>
)
}