From 343996defa39d1565f953bfcd585f3db493d02f0 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Wed, 21 Jun 2023 14:20:58 +0000 Subject: [PATCH 1/2] fix(site): show error when workspace parameter is invalid --- site/src/components/Alert/ErrorAlert.tsx | 6 +++++- .../WorkspaceParametersPage/WorkspaceParametersPage.tsx | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/site/src/components/Alert/ErrorAlert.tsx b/site/src/components/Alert/ErrorAlert.tsx index fd193bbbf74fd..5b46633471b27 100644 --- a/site/src/components/Alert/ErrorAlert.tsx +++ b/site/src/components/Alert/ErrorAlert.tsx @@ -9,12 +9,16 @@ export const ErrorAlert: FC< const message = getErrorMessage(error, "Something went wrong.") const detail = getErrorDetail(error) + // For some reason, the message and detail can be the same on the BE, but does + // not make sense in the FE to showing them duplicated + const shouldDisplayDetail = message !== detail + return ( {detail ? ( <> {message} - {detail} + {shouldDisplayDetail && {detail}} ) : ( message diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx index e7a09d2f5eca6..f6d97c01cf79f 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx @@ -18,6 +18,8 @@ import { makeStyles } from "@mui/styles" import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader" import { displaySuccess } from "components/GlobalSnackbar/utils" import { FC } from "react" +import { isApiValidationError } from "api/errors" +import { ErrorAlert } from "components/Alert/ErrorAlert" const getWorkspaceParameters = async (workspace: Workspace) => { const latestBuild = workspace.latest_build @@ -90,6 +92,10 @@ export const WorkspaceParametersPageView: FC< Workspace parameters + {submitError && !isApiValidationError(submitError) && ( + + )} + {data ? ( Date: Wed, 21 Jun 2023 14:21:06 +0000 Subject: [PATCH 2/2] add be --- codersdk/richparameters.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/codersdk/richparameters.go b/codersdk/richparameters.go index 8785cba3db62b..f23f9040a388c 100644 --- a/codersdk/richparameters.go +++ b/codersdk/richparameters.go @@ -50,11 +50,11 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui switch richParameter.ValidationMonotonic { case MonotonicOrderIncreasing: if lastBuildParameter.Value > buildParameter.Value { - return xerrors.Errorf("parameter value must be equal or greater than previous value: %s", lastBuildParameter.Value) + return xerrors.Errorf("Parameter value must be equal or greater than previous value: %s", lastBuildParameter.Value) } case MonotonicOrderDecreasing: if lastBuildParameter.Value < buildParameter.Value { - return xerrors.Errorf("parameter value must be equal or lower than previous value: %s", lastBuildParameter.Value) + return xerrors.Errorf("Parameter value must be equal or lower than previous value: %s", lastBuildParameter.Value) } } } @@ -69,7 +69,7 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui } if !matched { - return xerrors.Errorf("parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options)) + return xerrors.Errorf("Parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options)) } return nil }