header.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import React, { useCallback } from 'react'
  2. import ChatToggleButton from '@/features/editor-navigation-toolbar/components/chat-toggle-button'
  3. import HistoryToggleButton from '@/features/editor-navigation-toolbar/components/history-toggle-button'
  4. import LayoutDropdownButton from '@/features/editor-navigation-toolbar/components/layout-dropdown-button'
  5. import MenuButton from '@/features/editor-navigation-toolbar/components/menu-button'
  6. import { useLayoutContext } from '@/shared/context/layout-context'
  7. import { sendMB } from '@/infrastructure/event-tracking'
  8. import OnlineUsersWidget from '@/features/editor-navigation-toolbar/components/online-users-widget'
  9. import { useOnlineUsersContext } from '@/features/ide-react/context/online-users-context'
  10. type HeaderProps = {
  11. chatIsOpen: boolean
  12. setChatIsOpen: (chatIsOpen: boolean) => void
  13. historyIsOpen: boolean
  14. setHistoryIsOpen: (historyIsOpen: boolean) => void
  15. }
  16. export default function Header({
  17. chatIsOpen,
  18. setChatIsOpen,
  19. historyIsOpen,
  20. setHistoryIsOpen,
  21. }: HeaderProps) {
  22. const { setLeftMenuShown } = useLayoutContext()
  23. const { onlineUsersArray } = useOnlineUsersContext()
  24. function toggleChatOpen() {
  25. setChatIsOpen(!chatIsOpen)
  26. }
  27. function toggleHistoryOpen() {
  28. setHistoryIsOpen(!historyIsOpen)
  29. }
  30. const handleShowLeftMenuClick = useCallback(() => {
  31. sendMB('navigation-clicked-menu')
  32. setLeftMenuShown(value => !value)
  33. }, [setLeftMenuShown])
  34. return (
  35. <header className="toolbar toolbar-header">
  36. <div className="toolbar-left">
  37. <MenuButton onClick={handleShowLeftMenuClick} />
  38. </div>
  39. <div className="toolbar-right">
  40. <OnlineUsersWidget
  41. onlineUsers={onlineUsersArray}
  42. goToUser={() => alert('Not implemented')}
  43. />
  44. <LayoutDropdownButton />
  45. <HistoryToggleButton
  46. historyIsOpen={historyIsOpen}
  47. onClick={toggleHistoryOpen}
  48. />
  49. <ChatToggleButton
  50. chatIsOpen={chatIsOpen}
  51. onClick={toggleChatOpen}
  52. unreadMessageCount={0}
  53. />
  54. </div>
  55. </header>
  56. )
  57. }