try-new-editor-button.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { useCallback } from 'react'
  2. import OLButton from '../../shared/components/ol/ol-button'
  3. import { useIdeRedesignSwitcherContext } from '../ide-react/context/ide-redesign-switcher-context'
  4. import { useTranslation } from 'react-i18next'
  5. import { canUseNewEditorViaPrimaryFeatureFlag } from '../ide-redesign/utils/new-editor-utils'
  6. import { useSwitchEnableNewEditorState } from '../ide-redesign/hooks/use-switch-enable-new-editor-state'
  7. import { Spinner } from 'react-bootstrap'
  8. const TryNewEditorButton = () => {
  9. const { t } = useTranslation()
  10. const { setShowSwitcherModal } = useIdeRedesignSwitcherContext()
  11. const showModal = canUseNewEditorViaPrimaryFeatureFlag()
  12. const { loading, setEditorRedesignStatus } = useSwitchEnableNewEditorState()
  13. const onClick = useCallback(() => {
  14. if (showModal) {
  15. setShowSwitcherModal(true)
  16. } else {
  17. setEditorRedesignStatus(true)
  18. }
  19. }, [setShowSwitcherModal, showModal, setEditorRedesignStatus])
  20. return (
  21. <div className="d-flex align-items-center">
  22. <OLButton
  23. className="toolbar-experiment-button"
  24. onClick={onClick}
  25. size="sm"
  26. variant="secondary"
  27. >
  28. {loading ? (
  29. <Spinner
  30. animation="border"
  31. aria-hidden="true"
  32. size="sm"
  33. role="status"
  34. />
  35. ) : (
  36. t('try_the_new_editor')
  37. )}
  38. </OLButton>
  39. </div>
  40. )
  41. }
  42. export default TryNewEditorButton