mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix(site): Fix missing parameters detection on update workspace (#6740)
This commit is contained in:
+4
-1
@@ -977,7 +977,10 @@ const getMissingParameters = (
|
||||
) => {
|
||||
const missingParameters: TypesGen.TemplateVersionParameter[] = []
|
||||
const requiredParameters = templateParameters.filter(
|
||||
(p) => p.required && p.mutable,
|
||||
// It is required
|
||||
// and it can be changed
|
||||
// and it is not from a legacy variable
|
||||
(p) => p.required && p.mutable && p.legacy_variable_name === undefined,
|
||||
)
|
||||
|
||||
for (const parameter of requiredParameters) {
|
||||
|
||||
@@ -25,21 +25,22 @@ import { useTranslation } from "react-i18next"
|
||||
export type UpdateBuildParametersDialogProps = DialogProps & {
|
||||
onClose: () => void
|
||||
onUpdate: (buildParameters: WorkspaceBuildParameter[]) => void
|
||||
parameters?: TemplateVersionParameter[]
|
||||
missedParameters?: TemplateVersionParameter[]
|
||||
}
|
||||
|
||||
export const UpdateBuildParametersDialog: FC<
|
||||
UpdateBuildParametersDialogProps
|
||||
> = ({ parameters, onUpdate, ...dialogProps }) => {
|
||||
> = ({ missedParameters, onUpdate, ...dialogProps }) => {
|
||||
const styles = useStyles()
|
||||
const form = useFormik({
|
||||
initialValues: {
|
||||
rich_parameter_values: selectInitialRichParametersValues(parameters),
|
||||
rich_parameter_values:
|
||||
selectInitialRichParametersValues(missedParameters),
|
||||
},
|
||||
validationSchema: Yup.object({
|
||||
rich_parameter_values: useValidationSchemaForRichParameters(
|
||||
"createWorkspacePage",
|
||||
parameters,
|
||||
missedParameters,
|
||||
),
|
||||
}),
|
||||
onSubmit: (values) => {
|
||||
@@ -72,13 +73,9 @@ export const UpdateBuildParametersDialog: FC<
|
||||
onSubmit={form.handleSubmit}
|
||||
id="updateParameters"
|
||||
>
|
||||
{parameters && parameters.filter((p) => p.mutable).length > 0 && (
|
||||
{missedParameters && (
|
||||
<FormFields>
|
||||
{parameters.map((parameter, index) => {
|
||||
if (!parameter.mutable) {
|
||||
return <></>
|
||||
}
|
||||
|
||||
{missedParameters.map((parameter, index) => {
|
||||
return (
|
||||
<RichParameterInput
|
||||
{...getFieldHelpers(
|
||||
|
||||
@@ -52,7 +52,7 @@ export const WorkspaceReadyPage = ({
|
||||
cancellationError,
|
||||
applicationsHost,
|
||||
permissions,
|
||||
missingParameters,
|
||||
missedParameters,
|
||||
} = workspaceState.context
|
||||
if (workspace === undefined) {
|
||||
throw Error("Workspace is undefined")
|
||||
@@ -140,7 +140,7 @@ export const WorkspaceReadyPage = ({
|
||||
}}
|
||||
/>
|
||||
<UpdateBuildParametersDialog
|
||||
parameters={missingParameters}
|
||||
missedParameters={missedParameters}
|
||||
open={workspaceState.matches(
|
||||
"ready.build.askingForMissedBuildParameters",
|
||||
)}
|
||||
|
||||
@@ -62,7 +62,7 @@ export interface WorkspaceContext {
|
||||
// Builds
|
||||
builds?: TypesGen.WorkspaceBuild[]
|
||||
getBuildsError?: Error | unknown
|
||||
missingParameters?: TypesGen.TemplateVersionParameter[]
|
||||
missedParameters?: TypesGen.TemplateVersionParameter[]
|
||||
// error creating a new WorkspaceBuild
|
||||
buildError?: Error | unknown
|
||||
cancellationMessage?: Types.Message
|
||||
@@ -302,7 +302,7 @@ export const workspaceMachine = createMachine(
|
||||
{
|
||||
target: "askingForMissedBuildParameters",
|
||||
cond: "isMissingBuildParameterError",
|
||||
actions: ["assignMissingParameters"],
|
||||
actions: ["assignMissedParameters"],
|
||||
},
|
||||
{
|
||||
target: "idle",
|
||||
@@ -597,8 +597,8 @@ export const workspaceMachine = createMachine(
|
||||
}
|
||||
},
|
||||
}),
|
||||
assignMissingParameters: assign({
|
||||
missingParameters: (_, { data }) => {
|
||||
assignMissedParameters: assign({
|
||||
missedParameters: (_, { data }) => {
|
||||
if (!(data instanceof API.MissingBuildParameters)) {
|
||||
throw new Error("data is not a MissingBuildParameters error")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user