Skip to content

Commit 03d832c

Browse files
committed
Copy from template
1 parent def3a36 commit 03d832c

File tree

3 files changed

+47
-14
lines changed

3 files changed

+47
-14
lines changed

site/src/api/api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ export const getTemplateVersionGitAuth = async (
335335

336336
export const getTemplateVersionParameters = async (
337337
versionId: string,
338-
): Promise<TypesGen.Parameter[]> => {
338+
): Promise<TypesGen.ComputedParameter[]> => {
339339
const response = await axios.get(
340340
`/api/v2/templateversions/${versionId}/parameters`,
341341
)

site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ const getInitialValues = ({
120120
fromCopy,
121121
canSetMaxTTL,
122122
variables,
123+
parameters,
123124
}: GetInitialValuesParams) => {
124125
let initialValues = defaultInitialValues
125126

@@ -151,19 +152,26 @@ const getInitialValues = ({
151152

152153
if (variables) {
153154
variables.forEach((variable) => {
154-
if (variable.sensitive) {
155-
return
156-
}
157155
if (!initialValues.user_variable_values) {
158156
initialValues.user_variable_values = []
159157
}
160158
initialValues.user_variable_values.push({
161159
name: variable.name,
162-
value: variable.value,
160+
value: variable.sensitive ? "" : variable.value,
163161
})
164162
})
165163
}
166164

165+
if (parameters) {
166+
parameters.forEach((parameter) => {
167+
if (!initialValues.parameter_values_by_name) {
168+
initialValues.parameter_values_by_name = {}
169+
}
170+
initialValues.parameter_values_by_name[parameter.name] =
171+
parameter.default_source_value
172+
})
173+
}
174+
167175
return initialValues
168176
}
169177

@@ -203,6 +211,7 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = ({
203211
fromExample: starterTemplate,
204212
fromCopy: copiedTemplate,
205213
variables,
214+
parameters,
206215
}),
207216
validationSchema,
208217
onSubmit,
@@ -407,7 +416,7 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = ({
407416
<FormFields>
408417
{variables.map((variable, index) => (
409418
<VariableInput
410-
defaultValue={form.values.user_variable_values?.[index].value}
419+
defaultValue={variable.value}
411420
variable={variable}
412421
disabled={isSubmitting}
413422
key={variable.name}

site/src/xServices/createTemplate/createTemplateXService.ts

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
getTemplateVersionLogs,
99
getTemplateVersionVariables,
1010
getTemplateByName,
11+
getTemplateVersionParameters,
1112
} from "api/api"
1213
import {
1314
CreateTemplateVersionRequest,
@@ -114,7 +115,7 @@ export const createTemplateMachine =
114115
data: {
115116
template: Template
116117
version: TemplateVersion
117-
118+
parameters: ParameterSchema[]
118119
variables: TemplateVersionVariable[]
119120
}
120121
}
@@ -155,7 +156,7 @@ export const createTemplateMachine =
155156
{
156157
target: "creating.promptParametersAndVariables",
157158
actions: ["assignCopiedTemplateData"],
158-
cond: "hasVariables",
159+
cond: "hasParametersOrVariables",
159160
},
160161
{
161162
target: "idle",
@@ -340,14 +341,36 @@ export const createTemplateMachine =
340341
organizationId,
341342
templateNameToCopy,
342343
)
343-
const [version, variables] = await Promise.all([
344-
getTemplateVersion(template.active_version_id),
344+
const [version, schemaParameters, computedParameters, variables] =
345+
await Promise.all([
346+
getTemplateVersion(template.active_version_id),
347+
getTemplateVersionSchema(template.active_version_id),
348+
getTemplateVersionParameters(template.active_version_id),
349+
getTemplateVersionVariables(template.active_version_id),
350+
])
351+
352+
// Recreate parameters with default_source_value from the already
353+
// computed version parameters
354+
const parameters: ParameterSchema[] = []
355+
computedParameters.forEach((computedParameter) => {
356+
const schema = schemaParameters.find(
357+
(schema) => schema.name === computedParameter.name,
358+
)
359+
if (!schema) {
360+
throw new Error(
361+
`Parameter ${computedParameter.name} not found in schema`,
362+
)
363+
}
364+
parameters.push({
365+
...schema,
366+
default_source_value: computedParameter.source_value,
367+
})
368+
})
345369

346-
getTemplateVersionVariables(template.active_version_id),
347-
])
348370
return {
349371
template,
350372
version,
373+
parameters,
351374
variables,
352375
}
353376
},
@@ -518,6 +541,7 @@ export const createTemplateMachine =
518541
assignCopiedTemplateData: assign({
519542
copiedTemplate: (_, { data }) => data.template,
520543
version: (_, { data }) => data.version,
544+
parameters: (_, { data }) => data.parameters,
521545
variables: (_, { data }) => data.variables,
522546
}),
523547
},
@@ -535,8 +559,8 @@ export const createTemplateMachine =
535559
),
536560
hasNoParametersOrVariables: (_, { data }) =>
537561
data.parameters === undefined && data.variables === undefined,
538-
hasVariables: (_, { data }) => {
539-
return data.variables.length > 0
562+
hasParametersOrVariables: (_, { data }) => {
563+
return data.parameters.length > 0 || data.variables.length > 0
540564
},
541565
},
542566
},

0 commit comments

Comments
 (0)