ide-page.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { lazy, Suspense } from 'react'
  2. import { Alerts } from '@/features/ide-react/components/alerts/alerts'
  3. import { MainLayout } from '@/features/ide-react/components/layout/main-layout'
  4. import EditorLeftMenu from '@/features/editor-left-menu/components/editor-left-menu'
  5. import { useLayoutEventTracking } from '@/features/ide-react/hooks/use-layout-event-tracking'
  6. import useSocketListeners from '@/features/ide-react/hooks/use-socket-listeners'
  7. import { useEditingSessionHeartbeat } from '@/features/ide-react/hooks/use-editing-session-heartbeat'
  8. import { useRegisterUserActivity } from '@/features/ide-react/hooks/use-register-user-activity'
  9. import { useHasLintingError } from '@/features/ide-react/hooks/use-has-linting-error'
  10. import { Modals } from '@/features/ide-react/components/modals/modals'
  11. import { GlobalAlertsProvider } from '@/features/ide-react/context/global-alerts-context'
  12. import { GlobalToasts } from '../global-toasts'
  13. import { useIsNewEditorEnabled } from '@/features/ide-redesign/utils/new-editor-utils'
  14. const MainLayoutNew = lazy(
  15. () => import('@/features/ide-redesign/components/main-layout')
  16. )
  17. const SettingsModalNew = lazy(
  18. () => import('@/features/ide-redesign/components/settings/settings-modal')
  19. )
  20. export default function IdePage() {
  21. useLayoutEventTracking() // sent event when the layout changes
  22. useSocketListeners() // listen for project-related websocket messages
  23. useEditingSessionHeartbeat() // send a batched event when user is active
  24. useRegisterUserActivity() // record activity and ensure connection when user is active
  25. useHasLintingError() // pass editor:lint hasLintingError to the compiler
  26. const newEditor = useIsNewEditorEnabled()
  27. return (
  28. <GlobalAlertsProvider>
  29. <Alerts />
  30. <Modals />
  31. {newEditor ? (
  32. <Suspense fallback={null}>
  33. <SettingsModalNew />
  34. <MainLayoutNew />
  35. </Suspense>
  36. ) : (
  37. <>
  38. <EditorLeftMenu />
  39. <MainLayout />
  40. </>
  41. )}
  42. <GlobalToasts />
  43. </GlobalAlertsProvider>
  44. )
  45. }