export async function createInputBox()

in src/handler/utils.ts [94:160]


export async function createInputBox(inputMetaData: IInputMetaData): Promise<boolean> {
    const disposables: Disposable[] = [];
    const result: boolean = await new Promise<boolean>((resolve, reject) => {
        const inputBox: InputBox = window.createInputBox();
        inputBox.title = inputMetaData.title;
        inputBox.placeholder = inputMetaData.placeholder;
        inputBox.prompt = inputMetaData.prompt;
        inputBox.value = inputMetaData.defaultValue;
        inputBox.ignoreFocusOut = true;
        if (inputMetaData.metadata.pickSteps.length > 0) {
            inputBox.buttons = [(QuickInputButtons.Back)];
            disposables.push(
                inputBox.onDidTriggerButton((item) => {
                    if (item === QuickInputButtons.Back) {
                        return resolve(false);
                    }
                })
            );
        }
        disposables.push(
            inputBox.onDidChangeValue(() => {
                let validCheck: string | null;
                if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
                    validCheck = groupIdValidation(inputBox.value);
                } else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
                    validCheck = artifactIdValidation(inputBox.value);
                }
                if (validCheck !== null) {
                    inputBox.enabled = false;
                    inputBox.validationMessage = validCheck;
                } else {
                    inputBox.enabled = true;
                    inputBox.validationMessage = undefined;
                }
            }),
            inputBox.onDidAccept(() => {
                if (!inputBox.enabled) {
                    return;
                }
                if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
                    inputMetaData.metadata.groupId = inputBox.value;
                    SpecifyGroupIdStep.getInstance().setDefaultInput(inputBox.value);
                    inputMetaData.metadata.pickSteps.push(SpecifyGroupIdStep.getInstance());
                } else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
                    inputMetaData.metadata.artifactId = inputBox.value;
                    SpecifyArtifactIdStep.getInstance().setDefaultInput(inputBox.value);
                    inputMetaData.metadata.pickSteps.push(SpecifyArtifactIdStep.getInstance());
                }
                return resolve(true);
            }),
            inputBox.onDidHide(() => {
                if (inputMetaData.pickStep instanceof SpecifyGroupIdStep) {
                    return reject(new OperationCanceledError("GroupId not specified."));
                } else if (inputMetaData.pickStep instanceof SpecifyArtifactIdStep) {
                    return reject(new OperationCanceledError("ArtifactId not specified."));
                }
                return reject(new Error("Unknown inputting step"));
            })
        );
        disposables.push(inputBox);
        inputBox.show();
    });
    for (const d of disposables) {
        d.dispose();
    }
    return result;
}