diff --git a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx index 00d9c99e22..cdd584f7df 100644 --- a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx @@ -3,13 +3,16 @@ import { template, templateVersion, templateVersionLogs, + templateVersionPresets, templateVersionVariables, } from "api/queries/templates"; import type { Template, TemplateVersion } from "api/typesGenerated"; import { useDashboard } from "modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useNavigate, useSearchParams } from "react-router"; +import { Alert } from "#/components/Alert/Alert"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; import { CreateTemplateForm } from "./CreateTemplateForm"; @@ -38,6 +41,16 @@ export const DuplicateTemplateView: FC = ({ ...templateVersionVariables(activeVersionId), enabled: templateQuery.isSuccess, }); + const { workspace_prebuilds: prebuildsEnabled } = useFeatureVisibility(); + const presetsQuery = useQuery({ + ...templateVersionPresets(activeVersionId), + enabled: templateQuery.isSuccess && prebuildsEnabled, + }); + const totalPrebuilds = + presetsQuery.data?.reduce( + (sum, preset) => sum + (preset.DesiredPrebuildInstances ?? 0), + 0, + ) ?? 0; const isLoading = templateQuery.isLoading || templateVersionQuery.isLoading || @@ -64,29 +77,38 @@ export const DuplicateTemplateView: FC = ({ } return ( - navigate(-1)} - jobError={isJobError ? error.job.error : undefined} - logs={templateVersionLogsQuery.data} - onSubmit={async (formData) => { - await onCreateTemplate({ - organization: (templateQuery.data as Template).organization_name, - version: firstVersionFromFile( - (templateVersionQuery.data as TemplateVersion).job.file_id, - formData.user_variable_values, - formData.provisioner_type, - formData.tags, - ), - template: newTemplate(formData), - }); - }} - /> + <> + {totalPrebuilds > 0 && ( + + This template has prebuilds configured. Duplicating this template will + automatically cause {totalPrebuilds}{" "} + {totalPrebuilds === 1 ? "prebuild" : "prebuilds"} to be created. + + )} + navigate(-1)} + jobError={isJobError ? error.job.error : undefined} + logs={templateVersionLogsQuery.data} + onSubmit={async (formData) => { + await onCreateTemplate({ + organization: (templateQuery.data as Template).organization_name, + version: firstVersionFromFile( + (templateVersionQuery.data as TemplateVersion).job.file_id, + formData.user_variable_values, + formData.provisioner_type, + formData.tags, + ), + template: newTemplate(formData), + }); + }} + /> + ); };