ide-page.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { useConnectionContext } from '@/features/ide-react/context/connection-context'
  2. import useEventListener from '@/shared/hooks/use-event-listener'
  3. import { useCallback, useEffect, useState } from 'react'
  4. import { Alerts } from '@/features/ide-react/components/alerts/alerts'
  5. import { useLayoutContext } from '@/shared/context/layout-context'
  6. import PlaceholderChat from '@/features/ide-react/components/layout/placeholder/placeholder-chat'
  7. import PlaceholderHistory from '@/features/ide-react/components/layout/placeholder/placeholder-history'
  8. import MainLayout from '@/features/ide-react/components/layout/main-layout'
  9. import { EditorAndSidebar } from '@/features/ide-react/components/editor-and-sidebar'
  10. import EditorLeftMenu from '@/features/editor-left-menu/components/editor-left-menu'
  11. import EditorNavigationToolbar from '@/features/ide-react/components/editor-navigation-toolbar'
  12. import { useLayoutEventTracking } from '@/features/ide-react/hooks/use-layout-event-tracking'
  13. import useSocketListeners from '@/features/ide-react/hooks/use-socket-listeners'
  14. // This is filled with placeholder content while the real content is migrated
  15. // away from Angular
  16. export default function IdePage() {
  17. useLayoutEventTracking()
  18. useSocketListeners()
  19. const [leftColumnDefaultSize, setLeftColumnDefaultSize] = useState(20)
  20. const { registerUserActivity } = useConnectionContext()
  21. // Inform the connection manager when the user is active
  22. const listener = useCallback(
  23. () => registerUserActivity(),
  24. [registerUserActivity]
  25. )
  26. useEventListener('cursor:editor:update', listener)
  27. useEffect(() => {
  28. document.body.addEventListener('click', listener)
  29. return () => document.body.removeEventListener('click', listener)
  30. }, [listener])
  31. const { chatIsOpen, view } = useLayoutContext()
  32. const historyIsOpen = view === 'history'
  33. const mainContent = historyIsOpen ? (
  34. <PlaceholderHistory
  35. shouldPersistLayout
  36. leftColumnDefaultSize={leftColumnDefaultSize}
  37. setLeftColumnDefaultSize={setLeftColumnDefaultSize}
  38. />
  39. ) : (
  40. <EditorAndSidebar
  41. leftColumnDefaultSize={leftColumnDefaultSize}
  42. setLeftColumnDefaultSize={setLeftColumnDefaultSize}
  43. shouldPersistLayout
  44. />
  45. )
  46. return (
  47. <>
  48. <Alerts />
  49. <EditorLeftMenu />
  50. <MainLayout
  51. headerContent={<EditorNavigationToolbar />}
  52. chatContent={<PlaceholderChat />}
  53. mainContent={mainContent}
  54. chatIsOpen={chatIsOpen}
  55. shouldPersistLayout
  56. />
  57. </>
  58. )
  59. }