import { useEffect, FC, useState } from "react"; // plane ui import { EModalPosition, EModalWidth, ModalCore } from "@plane/ui"; // helpers import { getAssetIdFromUrl } from "@/helpers/file.helper"; import { checkURLValidity } from "@/helpers/string.helper"; // plane web components import { CreateProjectForm } from "@/plane-web/components/projects/create/root"; // plane web types import { TProject } from "@/plane-web/types/projects"; // services import { FileService } from "@/services/file.service"; const fileService = new FileService(); import { ProjectFeatureUpdate } from "./project-feature-update"; type Props = { isOpen: boolean; onClose: () => void; setToFavorite?: boolean; workspaceSlug: string; data?: Partial; templateId?: string; }; enum EProjectCreationSteps { CREATE_PROJECT = "CREATE_PROJECT", FEATURE_SELECTION = "FEATURE_SELECTION", } export const CreateProjectModal: FC = (props) => { const { isOpen, onClose, setToFavorite = false, workspaceSlug, data, templateId } = props; // states const [currentStep, setCurrentStep] = useState(EProjectCreationSteps.CREATE_PROJECT); const [createdProjectId, setCreatedProjectId] = useState(null); useEffect(() => { if (isOpen) { setCurrentStep(EProjectCreationSteps.CREATE_PROJECT); setCreatedProjectId(null); } }, [isOpen]); const handleNextStep = (projectId: string) => { if (!projectId) return; setCreatedProjectId(projectId); setCurrentStep(EProjectCreationSteps.FEATURE_SELECTION); }; const handleCoverImageStatusUpdate = async (projectId: string, coverImage: string) => { if (!checkURLValidity(coverImage)) { await fileService.updateBulkProjectAssetsUploadStatus(workspaceSlug, projectId, projectId, { asset_ids: [getAssetIdFromUrl(coverImage)], }); } }; return ( {currentStep === EProjectCreationSteps.CREATE_PROJECT && ( )} {currentStep === EProjectCreationSteps.FEATURE_SELECTION && ( )} ); };