import { Dialog, DialogContent, DialogTitle } from "@mui/material"; import { useEffect, useState } from "react"; import { workspaceService } from "../services"; import useLoading from "../hooks/useLoading"; import Icon from "./Icon"; import toastHelper from "./Toast"; interface Props { workspaceId?: WorkspaceId; onClose: () => void; onConfirm?: (workspace: Workspace) => void; } interface State { workspaceCreate: WorkspaceCreate; } const CreateWorkspaceDialog: React.FC = (props: Props) => { const { onClose, onConfirm, workspaceId } = props; const [state, setState] = useState({ workspaceCreate: { name: "", description: "", }, }); const requestState = useLoading(false); useEffect(() => { if (workspaceId) { const workspaceTemp = workspaceService.getWorkspaceById(workspaceId); if (workspaceTemp) { setState({ ...state, workspaceCreate: Object.assign(state.workspaceCreate, { name: workspaceTemp.name, description: workspaceTemp.description, }), }); } } }, [workspaceId]); const handleInputChange = (e: React.ChangeEvent, key: string) => { const text = e.target.value as string; const tempObject = {} as any; tempObject[key] = text; setState({ ...state, workspaceCreate: Object.assign(state.workspaceCreate, tempObject), }); }; const handleNameInputChange = (e: React.ChangeEvent) => { handleInputChange(e, "name"); }; const handleDescriptionInputChange = (e: React.ChangeEvent) => { handleInputChange(e, "description"); }; const handleSaveBtnClick = async () => { if (!state.workspaceCreate.name) { toastHelper.error("Name is required"); return; } requestState.setLoading(); try { let workspace; if (workspaceId) { workspace = await workspaceService.patchWorkspace({ id: workspaceId, ...state.workspaceCreate, }); } else { workspace = await workspaceService.createWorkspace({ ...state.workspaceCreate, }); } if (onConfirm) { onConfirm(workspace); } else { onClose(); } } catch (error: any) { console.error(error); toastHelper.error(error.response.data.error || error.response.data.message); } requestState.setFinish(); }; return (

{workspaceId ? "Edit Workspace" : "Create Workspace"}

Name
Description
); }; export default CreateWorkspaceDialog;