import type { ReactNode } from "react"; import React, { useState } from "react"; import { Button, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Select, } from "design-system"; import { useDispatch, useSelector } from "react-redux"; import { getForkableWorkspaces, isImportingTemplateSelector, } from "selectors/templatesSelectors"; import { importTemplateToWorkspace } from "actions/templateActions"; import { CANCEL, CHOOSE_WHERE_TO_FORK, createMessage, FORK_TEMPLATE, SELECT_WORKSPACE, } from "@appsmith/constants/messages"; interface ForkTemplateProps { children?: ReactNode; showForkModal: boolean; onClose: (e?: React.MouseEvent) => void; templateId: string; } function ForkTemplate({ children, onClose, showForkModal, templateId, }: ForkTemplateProps) { const workspaceList = useSelector(getForkableWorkspaces); const [selectedWorkspace, setSelectedWorkspace] = useState(workspaceList[0]); const isImportingTemplate = useSelector(isImportingTemplateSelector); const dispatch = useDispatch(); const onFork = () => { dispatch(importTemplateToWorkspace(templateId, selectedWorkspace.value)); }; const closeModal = (isOpen: boolean) => { if (!isOpen && !isImportingTemplate) { onClose(); } }; return ( <> {children} {createMessage(CHOOSE_WHERE_TO_FORK)}