Skip to content

Commit 139ea5b

Browse files
committed
Refactor form
1 parent 99fb386 commit 139ea5b

File tree

1 file changed

+42
-27
lines changed

1 file changed

+42
-27
lines changed

site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,22 @@ export const WorkspaceSettingsForm: FC<{
2525
onSubmit: (values: WorkspaceSettingsFormValue) => void
2626
}> = ({ onCancel, onSubmit, settings, error, isSubmitting }) => {
2727
const { t } = useTranslation("createWorkspacePage")
28+
const mutableParameters = settings.templateVersionParameters.filter(
29+
(param) => param.mutable,
30+
)
2831
const form = useFormik<WorkspaceSettingsFormValue>({
2932
onSubmit,
3033
initialValues: {
3134
name: settings.workspace.name,
32-
rich_parameter_values: settings.buildParameters,
35+
rich_parameter_values: mutableParameters.map((parameter) => {
36+
const buildParameter = settings.buildParameters.find(
37+
(p) => p.name === parameter.name,
38+
)
39+
if (!buildParameter) {
40+
throw new Error("Missing build parameter for " + parameter.name)
41+
}
42+
return buildParameter
43+
}),
3344
},
3445
validationSchema: Yup.object({
3546
name: nameValidator(t("nameLabel", { ns: "createWorkspacePage" })),
@@ -62,32 +73,36 @@ export const WorkspaceSettingsForm: FC<{
6273
/>
6374
</FormFields>
6475
</FormSection>
65-
<FormSection
66-
title="Parameters"
67-
description="The template and name of your new workspace."
68-
>
69-
<FormFields>
70-
{settings.templateVersionParameters.map((parameter, index) => (
71-
<RichParameterInput
72-
{...getFieldHelpers("rich_parameter_values[" + index + "].value")}
73-
disabled={isSubmitting}
74-
index={index}
75-
key={parameter.name}
76-
onChange={async (value) => {
77-
await form.setFieldValue("rich_parameter_values." + index, {
78-
name: parameter.name,
79-
value: value,
80-
})
81-
}}
82-
parameter={parameter}
83-
initialValue={workspaceBuildParameterValue(
84-
settings.buildParameters,
85-
parameter,
86-
)}
87-
/>
88-
))}
89-
</FormFields>
90-
</FormSection>
76+
{mutableParameters.length > 0 && (
77+
<FormSection
78+
title="Parameters"
79+
description="The template and name of your new workspace."
80+
>
81+
<FormFields>
82+
{settings.templateVersionParameters.map((parameter, index) => (
83+
<RichParameterInput
84+
{...getFieldHelpers(
85+
"rich_parameter_values[" + index + "].value",
86+
)}
87+
disabled={isSubmitting}
88+
index={index}
89+
key={parameter.name}
90+
onChange={async (value) => {
91+
await form.setFieldValue("rich_parameter_values." + index, {
92+
name: parameter.name,
93+
value: value,
94+
})
95+
}}
96+
parameter={parameter}
97+
initialValue={workspaceBuildParameterValue(
98+
settings.buildParameters,
99+
parameter,
100+
)}
101+
/>
102+
))}
103+
</FormFields>
104+
</FormSection>
105+
)}
91106
<FormFooter onCancel={onCancel} isLoading={isSubmitting} />
92107
</HorizontalForm>
93108
)

0 commit comments

Comments
 (0)