diff --git a/site/src/api/api.test.ts b/site/src/api/api.test.ts index 70ae81b1297a7..2155888534da2 100644 --- a/site/src/api/api.test.ts +++ b/site/src/api/api.test.ts @@ -173,7 +173,12 @@ describe("api.ts", () => { expect(api.postWorkspaceBuild).toHaveBeenCalledWith(MockWorkspace.id, { transition: "start", template_version_id: MockTemplate.active_version_id, - rich_parameter_values: [], + rich_parameter_values: [ + { + name: "first_parameter", + value: "mock-abc", + }, + ], }) }) @@ -222,7 +227,12 @@ describe("api.ts", () => { expect(api.postWorkspaceBuild).toHaveBeenCalledWith(MockWorkspace.id, { transition: "start", template_version_id: MockTemplate.active_version_id, - rich_parameter_values: [], + rich_parameter_values: [ + { + name: "first_parameter", + value: "mock-abc", + }, + ], }) }) }) diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 73cb6de377dd0..ab4b47f4820d4 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -1041,10 +1041,19 @@ export const updateWorkspace = async ( throw new MissingBuildParameters(missingParameters) } + // Merge parameters using name as key + const richParameterValues = newBuildParameters + oldBuildParameters.forEach((oldParam) => { + const newParam = richParameterValues.find((p) => p.name === oldParam.name) + if (newParam === undefined) { + richParameterValues.push(oldParam) + } + }) + return postWorkspaceBuild(workspace.id, { transition: "start", template_version_id: activeVersionId, - rich_parameter_values: newBuildParameters, + rich_parameter_values: richParameterValues, }) } diff --git a/site/src/xServices/workspace/workspaceXService.ts b/site/src/xServices/workspace/workspaceXService.ts index 2188f33d70949..2276c8034a126 100644 --- a/site/src/xServices/workspace/workspaceXService.ts +++ b/site/src/xServices/workspace/workspaceXService.ts @@ -117,31 +117,32 @@ export const checks = { const permissionsToCheck = ( workspace: TypesGen.Workspace, template: TypesGen.Template, -) => ({ - [checks.readWorkspace]: { - object: { - resource_type: "workspace", - resource_id: workspace.id, - owner_id: workspace.owner_id, +) => + ({ + [checks.readWorkspace]: { + object: { + resource_type: "workspace", + resource_id: workspace.id, + owner_id: workspace.owner_id, + }, + action: "read", }, - action: "read", - }, - [checks.updateWorkspace]: { - object: { - resource_type: "workspace", - resource_id: workspace.id, - owner_id: workspace.owner_id, + [checks.updateWorkspace]: { + object: { + resource_type: "workspace", + resource_id: workspace.id, + owner_id: workspace.owner_id, + }, + action: "update", }, - action: "update", - }, - [checks.updateTemplate]: { - object: { - resource_type: "template", - resource_id: template.id, + [checks.updateTemplate]: { + object: { + resource_type: "template", + resource_id: template.id, + }, + action: "update", }, - action: "update", - }, -}) + } as const) export const workspaceMachine = createMachine( {