From 14f08444a90ac9a2c68dc3b5e8d5dbba18b3f2b6 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Thu, 13 Nov 2025 13:00:12 +0000 Subject: [PATCH] fix: send all params instead of only touched params (#20740) resolves #20257 Ensure all parameters are sent in the web socket request instead of only touched parameters. Using touched parameters is irrelevant for the workspace parameters page in workspace settings because parameters that appear here have already been chosen by the user during workspace creation. So all parameters should be sent in the web socket request whether have been touched in the form or not. --- ...orkspaceParametersPageViewExperimental.tsx | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx index 52228f19d9..54bf0907da 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx @@ -48,18 +48,6 @@ export const WorkspaceParametersPageViewExperimental: FC< onCancel, templateVersionId, }) => { - const autofillByName = Object.fromEntries( - autofillParameters.map((param) => [param.name, param]), - ); - const initialTouched = parameters.reduce( - (touched, parameter) => { - if (autofillByName[parameter.name] !== undefined) { - touched[parameter.name] = true; - } - return touched; - }, - {} as Record, - ); const form = useFormik({ onSubmit, initialValues: { @@ -68,7 +56,6 @@ export const WorkspaceParametersPageViewExperimental: FC< autofillParameters, ), }, - initialTouched, validationSchema: useValidationSchemaForDynamicParameters(parameters), enableReinitialize: false, validateOnChange: true, @@ -89,28 +76,23 @@ export const WorkspaceParametersPageViewExperimental: FC< name: parameter.name, value, }); - form.setFieldTouched(parameter.name, true); sendDynamicParamsRequest(parameter, value); }; - // Send the changed parameter and all touched parameters to the websocket const sendDynamicParamsRequest = ( parameter: PreviewParameter, value: string, ) => { const formInputs: Record = {}; - formInputs[parameter.name] = value; const parameters = form.values.rich_parameter_values ?? []; - - for (const [fieldName, isTouched] of Object.entries(form.touched)) { - if (isTouched && fieldName !== parameter.name) { - const param = parameters.find((p) => p.name === fieldName); - if (param?.value) { - formInputs[fieldName] = param.value; - } + for (const param of parameters) { + if (param?.name && param?.value) { + formInputs[param.name] = param.value; } } + formInputs[parameter.name] = value; + sendMessage(formInputs); };