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>
);
}