diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 38857b9c621dd..a9202da505699 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -9677,14 +9677,17 @@ const docTemplate = `{ "type": "string", "enum": [ "example", - "shared-ports" + "shared-ports", + "auto-fill-parameters" ], "x-enum-comments": { + "ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.", "ExperimentExample": "This isn't used for anything." }, "x-enum-varnames": [ "ExperimentExample", - "ExperimentSharedPorts" + "ExperimentSharedPorts", + "ExperimentAutoFillParameters" ] }, "codersdk.ExternalAuth": { diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 11dad829c47ee..5b7482ceb916b 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -8672,11 +8672,16 @@ }, "codersdk.Experiment": { "type": "string", - "enum": ["example", "shared-ports"], + "enum": ["example", "shared-ports", "auto-fill-parameters"], "x-enum-comments": { + "ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.", "ExperimentExample": "This isn't used for anything." }, - "x-enum-varnames": ["ExperimentExample", "ExperimentSharedPorts"] + "x-enum-varnames": [ + "ExperimentExample", + "ExperimentSharedPorts", + "ExperimentAutoFillParameters" + ] }, "codersdk.ExternalAuth": { "type": "object", diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 63299e93136ef..4c1acb143df28 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2117,8 +2117,9 @@ type Experiment string const ( // Add new experiments here! - ExperimentExample Experiment = "example" // This isn't used for anything. - ExperimentSharedPorts Experiment = "shared-ports" + ExperimentExample Experiment = "example" // This isn't used for anything. + ExperimentSharedPorts Experiment = "shared-ports" + ExperimentAutoFillParameters Experiment = "auto-fill-parameters" // This should not be taken out of experiments until we have redesigned the feature. ) // ExperimentsAll should include all experiments that are safe for diff --git a/docs/api/schemas.md b/docs/api/schemas.md index 6c07f1f98a691..2cea4730ca345 100644 --- a/docs/api/schemas.md +++ b/docs/api/schemas.md @@ -2917,10 +2917,11 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in #### Enumerated Values -| Value | -| -------------- | -| `example` | -| `shared-ports` | +| Value | +| ---------------------- | +| `example` | +| `shared-ports` | +| `auto-fill-parameters` | ## codersdk.ExternalAuth diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 1d746273a8163..0b5079cd70ee7 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1894,8 +1894,12 @@ export const Entitlements: Entitlement[] = [ ]; // From codersdk/deployment.go -export type Experiment = "example" | "shared-ports"; -export const Experiments: Experiment[] = ["example", "shared-ports"]; +export type Experiment = "auto-fill-parameters" | "example" | "shared-ports"; +export const Experiments: Experiment[] = [ + "auto-fill-parameters", + "example", + "shared-ports", +]; // From codersdk/deployment.go export type FeatureName = diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 2136e6c3600cb..083ad01c7432d 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -26,6 +26,7 @@ import { paramsUsedToCreateWorkspace } from "utils/workspace"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; import { CreateWSPermissions, createWorkspaceChecks } from "./permissions"; import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; +import { useDashboard } from "modules/dashboard/useDashboard"; export const createWorkspaceModes = ["form", "auto", "duplicate"] as const; export type CreateWorkspaceMode = (typeof createWorkspaceModes)[number]; @@ -40,6 +41,7 @@ const CreateWorkspacePage: FC = () => { const [searchParams, setSearchParams] = useSearchParams(); const mode = getWorkspaceMode(searchParams); const customVersionId = searchParams.get("version") ?? undefined; + const { experiments } = useDashboard(); const defaultName = searchParams.get("name"); @@ -51,12 +53,6 @@ const CreateWorkspacePage: FC = () => { const templateQuery = useQuery(templateByName(organizationId, templateName)); - const userParametersQuery = useQuery({ - queryKey: ["userParameters"], - queryFn: () => getUserParameters(templateQuery.data!.id), - enabled: templateQuery.isSuccess, - }); - const permissionsQuery = useQuery( checkAuthorization({ checks: createWorkspaceChecks(organizationId), @@ -97,6 +93,13 @@ const CreateWorkspacePage: FC = () => { [navigate], ); + // Auto fill parameters + const userParametersQuery = useQuery({ + queryKey: ["userParameters"], + queryFn: () => getUserParameters(templateQuery.data!.id), + enabled: + experiments.includes("auto-fill-parameters") && templateQuery.isSuccess, + }); const autofillParameters = getAutofillParameters( searchParams, userParametersQuery.data ? userParametersQuery.data : [],