editor-clone-project-modal-wrapper.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React, { useCallback } from 'react'
  2. import { useProjectContext } from '../../../shared/context/project-context'
  3. import withErrorBoundary from '../../../infrastructure/error-boundary'
  4. import CloneProjectModal from './clone-project-modal'
  5. type ProjectCopyResponse = {
  6. project_id: string
  7. }
  8. const EditorCloneProjectModalWrapper = React.memo(
  9. function EditorCloneProjectModalWrapper({
  10. show,
  11. handleHide,
  12. openProject,
  13. }: {
  14. show: boolean
  15. handleHide: () => void
  16. openProject: (projectId: string) => void
  17. }) {
  18. const { project, tags: projectTags } = useProjectContext()
  19. const handleAfterCloned = useCallback(
  20. ({ project_id: projectId }: ProjectCopyResponse) => {
  21. openProject(projectId)
  22. },
  23. [openProject]
  24. )
  25. if (!project) {
  26. // wait for useProjectContext
  27. return null
  28. } else {
  29. return (
  30. <CloneProjectModal
  31. handleHide={handleHide}
  32. show={show}
  33. handleAfterCloned={handleAfterCloned}
  34. projectId={project._id}
  35. projectName={project.name}
  36. projectTags={projectTags}
  37. />
  38. )
  39. }
  40. }
  41. )
  42. export default withErrorBoundary(EditorCloneProjectModalWrapper)