function UnwrapClsDialog()

in src/web/src/views/workspace/WSEditorCommandArgumentsContent.tsx [1655:1726]


function UnwrapClsDialog(props: {
  commandUrl: string;
  arg: CMDArg;
  open: boolean;
  onClose: (unwrapped: boolean) => Promise<void>;
}) {
  const [updating, setUpdating] = useState<boolean>(false);
  const [invalidText, setInvalidText] = useState<string | undefined>(undefined);

  const handleClose = () => {
    setInvalidText(undefined);
    props.onClose(false);
  };

  const handleUnwrap = async () => {
    setUpdating(true);

    let argVar = props.arg.var;
    if (props.arg.type.startsWith("array")) {
      if ((props.arg as CMDArrayArg).item?.type.startsWith("@")) {
        argVar += "[]";
      }
    } else if (props.arg.type.startsWith("dict")) {
      if ((props.arg as CMDDictArg).item?.type.startsWith("@")) {
        argVar += "{}";
      }
    }

    const flattenUrl = `${props.commandUrl}/Arguments/${argVar}/UnwrapClass`;

    try {
      await axios.post(flattenUrl);
      setUpdating(false);
      await props.onClose(true);
    } catch (err: any) {
      console.error(err);
      if (err.response?.data?.message) {
        const data = err.response!.data!;
        setInvalidText(`ResponseError: ${data.message!}: ${JSON.stringify(data.details)}`);
      }
      setUpdating(false);
    }
  };

  return (
    <Dialog disableEscapeKeyDown open={props.open} sx={{ "& .MuiDialog-paper": { width: "80%" } }}>
      <DialogTitle>Unwrap Class Type </DialogTitle>
      <DialogContent dividers={true}>
        {invalidText && (
          <Alert variant="filled" severity="error">
            {" "}
            {invalidText}{" "}
          </Alert>
        )}
        <ArgTypeTypography>{props.arg.type}</ArgTypeTypography>
      </DialogContent>
      <DialogActions>
        {updating && (
          <Box sx={{ width: "100%" }}>
            <LinearProgress color="secondary" />
          </Box>
        )}
        {!updating && (
          <>
            <Button onClick={handleClose}>Cancel</Button>
            <Button onClick={handleUnwrap}>Unwrap Class</Button>
          </>
        )}
      </DialogActions>
    </Dialog>
  );
}