Skip to content

Commit b478f4b

Browse files
author
Lauren Nathan
committed
fix container validation
1 parent da95366 commit b478f4b

File tree

5 files changed

+32
-21
lines changed

5 files changed

+32
-21
lines changed

localization/l10n/bundle.l10n.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1227,7 +1227,7 @@
12271227
"Please choose a unique name for the container": "Please choose a unique name for the container",
12281228
"Port": "Port",
12291229
"Choose a port to host the SQL Server Docker Container": "Choose a port to host the SQL Server Docker Container",
1230-
"Please choose a port that is not in use": "Please choose a port that is not in use",
1230+
"Please make sure the port is a number, and choose a port that is not in use": "Please make sure the port is a number, and choose a port that is not in use",
12311231
"Hostname": "Hostname",
12321232
"Choose a hostname for the container": "Choose a hostname for the container",
12331233
"Terms & Conditions": "Terms & Conditions",

localization/xliff/vscode-mssql.xlf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1522,9 +1522,6 @@
15221522
<trans-unit id="++CODE++955d464619712f47bd39bd4fa1eb8ca90d1415bd5da4d3dc80b13d8be23f281e">
15231523
<source xml:lang="en">Please Accept the Docker EULA</source>
15241524
</trans-unit>
1525-
<trans-unit id="++CODE++1df1c1ebdbd0d721e5aea0d9f620d42982a7dc22147a6493a7112fd70115b853">
1526-
<source xml:lang="en">Please choose a port that is not in use</source>
1527-
</trans-unit>
15281525
<trans-unit id="++CODE++e9867ec277676c80767b62a3ccde695a9fd4b9927c6541f6bfb0be08bed55596">
15291526
<source xml:lang="en">Please choose a unique name for the container</source>
15301527
</trans-unit>
@@ -1534,6 +1531,9 @@
15341531
<trans-unit id="++CODE++2048d236cea5afafe8b7e125d9b86eb44250c4ac6f382bc412dca8e4188292fa">
15351532
<source xml:lang="en">Please make sure Rosetta Virtualization is enabled. You can do this within your Docker Desktop settings.</source>
15361533
</trans-unit>
1534+
<trans-unit id="++CODE++759058121cf2833fdf5f3228c2d13019bf96166084c277f8fb23c117159cb3a7">
1535+
<source xml:lang="en">Please make sure the port is a number, and choose a port that is not in use</source>
1536+
</trans-unit>
15371537
<trans-unit id="++CODE++768742aef46bbb43fdd36f568edeb182810dc96b84ad73db24565b95423f4829">
15381538
<source xml:lang="en">Please make your password at least 8 characters long.</source>
15391539
</trans-unit>

src/constants/locConstants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,9 @@ export class ContainerDeployment {
797797
);
798798
public static port = l10n.t("Port");
799799
public static portTooltip = l10n.t("Choose a port to host the SQL Server Docker Container");
800-
public static pleaseChooseUnusedPort = l10n.t("Please choose a port that is not in use");
800+
public static pleaseChooseUnusedPort = l10n.t(
801+
"Please make sure the port is a number, and choose a port that is not in use",
802+
);
801803
public static hostname = l10n.t("Hostname");
802804
public static hostnameTooltip = l10n.t("Choose a hostname for the container");
803805
public static termsAndConditions = l10n.t("Terms & Conditions");

src/containerDeployment/containerDeploymentWebviewController.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,13 @@ export class ContainerDeploymentWebviewController extends FormWebviewController<
8888
// eslint-disable-next-line @typescript-eslint/no-explicit-any
8989
] as any) = payload.event.value;
9090

91-
return await this.validateDockerConnectionProfile(
91+
const newState = await this.validateDockerConnectionProfile(
9292
state,
9393
this.state.formState,
9494
payload.event.propertyName,
9595
);
96+
this.updateState(newState);
97+
return newState;
9698
});
9799
this.registerReducer("completeDockerStep", async (state, payload) => {
98100
const currentStepNumber = payload.dockerStepNumber;
@@ -190,7 +192,11 @@ export class ContainerDeploymentWebviewController extends FormWebviewController<
190192
);
191193
state.isValidContainerName = validationResult !== "";
192194
if (!state.isValidContainerName) {
195+
component.validation = dockerUtils.invalidContainerNameValidationResult;
193196
erroredInputs.push(prop);
197+
} else {
198+
// If the container name is valid, we can reset the validation message
199+
component.validation = { isValid: true, validationMessage: "" };
194200
}
195201
}
196202
// Special validation for port, because docker commands
@@ -201,7 +207,10 @@ export class ContainerDeploymentWebviewController extends FormWebviewController<
201207
);
202208
state.isValidPortNumber = isValidPort;
203209
if (!isValidPort) {
210+
component.validation = dockerUtils.invalidPortNumberValidationResult;
204211
erroredInputs.push(prop);
212+
} else {
213+
component.validation = { isValid: true, validationMessage: "" };
205214
}
206215
}
207216
// Default validation logic
@@ -348,14 +357,8 @@ export class ContainerDeploymentWebviewController extends FormWebviewController<
348357
label: ContainerDeployment.containerName,
349358
isAdvancedOption: true,
350359
tooltip: ContainerDeployment.containerNameTooltip,
351-
validate(state, value) {
352-
return !value || value.toString() === "" || state.isValidContainerName
353-
? { isValid: true, validationMessage: "" }
354-
: {
355-
isValid: false,
356-
validationMessage:
357-
ContainerDeployment.pleaseChooseUniqueContainerName,
358-
};
360+
validate(state, _) {
361+
return { isValid: state.isValidContainerName, validationMessage: "" };
359362
},
360363
}),
361364

@@ -365,13 +368,8 @@ export class ContainerDeploymentWebviewController extends FormWebviewController<
365368
label: ContainerDeployment.port,
366369
isAdvancedOption: true,
367370
tooltip: ContainerDeployment.portTooltip,
368-
validate(state, value) {
369-
return !value || value.toString() === "" || state.isValidPortNumber
370-
? { isValid: true, validationMessage: "" }
371-
: {
372-
isValid: false,
373-
validationMessage: ContainerDeployment.pleaseChooseUnusedPort,
374-
};
371+
validate(state, _) {
372+
return { isValid: state.isValidPortNumber, validationMessage: "" };
375373
},
376374
}),
377375

src/containerDeployment/dockerUtils.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,17 @@ import { ContainerDeployment } from "../constants/locConstants";
2525
import { TelemetryActions, TelemetryViews } from "../sharedInterfaces/telemetry";
2626
import { sendActionEvent } from "../telemetry/telemetry";
2727
import * as path from "path";
28+
import { FormItemValidationState } from "../sharedInterfaces/form";
2829

2930
const MAX_ERROR_TEXT_LENGTH = 300;
31+
export const invalidContainerNameValidationResult: FormItemValidationState = {
32+
isValid: false,
33+
validationMessage: ContainerDeployment.pleaseChooseUniqueContainerName,
34+
};
35+
export const invalidPortNumberValidationResult: FormItemValidationState = {
36+
isValid: false,
37+
validationMessage: ContainerDeployment.pleaseChooseUnusedPort,
38+
};
3039

3140
/**
3241
* Commands used to interact with Docker.
@@ -79,6 +88,8 @@ export function initializeDockerSteps(): DockerStep[] {
7988
bodyText: ContainerDeployment.dockerInstallBody,
8089
link: "https://docs.docker.com/engine/install/",
8190
linkText: ContainerDeployment.installDocker,
91+
errorLink: "https://docs.docker.com/engine/install/",
92+
errorLinkText: ContainerDeployment.installDocker,
8293
stepAction: checkDockerInstallation,
8394
},
8495
{

0 commit comments

Comments
 (0)