root-context.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import createSharedContext from 'react2angular-shared-context'
  4. import { ApplicationProvider } from './application-context'
  5. import { IdeProvider } from './ide-context'
  6. import { EditorProvider } from './editor-context'
  7. import { CompileProvider } from './compile-context'
  8. import { LayoutProvider } from './layout-context'
  9. import { ChatProvider } from '../../features/chat/context/chat-context'
  10. export function ContextRoot({ children, ide, settings }) {
  11. const isAnonymousUser = window.user.id == null
  12. return (
  13. <ApplicationProvider>
  14. <IdeProvider ide={ide}>
  15. <EditorProvider settings={settings}>
  16. <CompileProvider>
  17. <LayoutProvider>
  18. {isAnonymousUser ? (
  19. children
  20. ) : (
  21. <ChatProvider>{children}</ChatProvider>
  22. )}
  23. </LayoutProvider>
  24. </CompileProvider>
  25. </EditorProvider>
  26. </IdeProvider>
  27. </ApplicationProvider>
  28. )
  29. }
  30. ContextRoot.propTypes = {
  31. children: PropTypes.any,
  32. ide: PropTypes.any.isRequired,
  33. settings: PropTypes.any.isRequired,
  34. }
  35. export const rootContext = createSharedContext(ContextRoot)