import { useState } from "react"; import { UNKNOWN_ID } from "../helpers/consts"; import { upsertWorkspaceUser } from "../helpers/api"; import useLoading from "../hooks/useLoading"; import Icon from "./Icon"; import { generateDialog } from "./Dialog"; import toastHelper from "./Toast"; interface Props extends DialogProps { workspaceId: WorkspaceId; } interface State { workspaceUserUpsert: WorkspaceUserUpsert; } const UpsertWorkspaceUserDialog: React.FC = (props: Props) => { const { destroy, workspaceId } = props; const [state, setState] = useState({ workspaceUserUpsert: { workspaceId: workspaceId, userId: UNKNOWN_ID, role: "USER", }, }); const requestState = useLoading(false); const handleUserIdInputChange = (e: React.ChangeEvent) => { const text = e.target.value as string; setState({ workspaceUserUpsert: Object.assign(state.workspaceUserUpsert, { userId: Number(text), }), }); }; const handleUserRoleInputChange = (e: React.ChangeEvent) => { const text = e.target.value as string; setState({ workspaceUserUpsert: Object.assign(state.workspaceUserUpsert, { role: text, }), }); }; const handleSaveBtnClick = async () => { if (!state.workspaceUserUpsert.userId) { toastHelper.error("User ID is required"); return; } requestState.setLoading(); try { await upsertWorkspaceUser({ ...state.workspaceUserUpsert, }); destroy(); } catch (error: any) { console.error(error); toastHelper.error(error.response.data.error || error.response.data.message); } requestState.setFinish(); }; return ( <>

Create Workspace Member

User ID
Role
); }; export default function showUpsertWorkspaceUserDialog(workspaceId: WorkspaceId, onDestory?: () => void) { return generateDialog( { onDestory, }, UpsertWorkspaceUserDialog, { workspaceId, } ); }