= ({ loading, works
description={Language.emptyCreateWorkspaceDescription}
cta={
- }>{Language.createWorkspaceButton}
+ }>{Language.createFromTemplateButton}
}
/>
diff --git a/site/src/xServices/createWorkspace/createWorkspaceXService.ts b/site/src/xServices/createWorkspace/createWorkspaceXService.ts
index 297819d1b2cb6..cefbd179c6f61 100644
--- a/site/src/xServices/createWorkspace/createWorkspaceXService.ts
+++ b/site/src/xServices/createWorkspace/createWorkspaceXService.ts
@@ -4,26 +4,18 @@ import { CreateWorkspaceRequest, ParameterSchema, Template, Workspace } from "..
type CreateWorkspaceContext = {
organizationId: string
+ templateName: string
templates?: Template[]
selectedTemplate?: Template
templateSchema?: ParameterSchema[]
createWorkspaceRequest?: CreateWorkspaceRequest
createdWorkspace?: Workspace
- // This is useful when the user wants to create a workspace from the template
- // page having it pre selected. It is string or null because of the
- // useSearchQuery
- preSelectedTemplateName: string | null
}
-type CreateWorkspaceEvent =
- | {
- type: "SELECT_TEMPLATE"
- template: Template
- }
- | {
- type: "CREATE_WORKSPACE"
- request: CreateWorkspaceRequest
- }
+type CreateWorkspaceEvent = {
+ type: "CREATE_WORKSPACE"
+ request: CreateWorkspaceRequest
+}
export const createWorkspaceMachine = createMachine(
{
@@ -45,12 +37,6 @@ export const createWorkspaceMachine = createMachine(
},
},
tsTypes: {} as import("./createWorkspaceXService.typegen").Typegen0,
- on: {
- SELECT_TEMPLATE: {
- actions: ["assignSelectedTemplate"],
- target: "gettingTemplateSchema",
- },
- },
states: {
gettingTemplates: {
invoke: {
@@ -58,17 +44,11 @@ export const createWorkspaceMachine = createMachine(
onDone: [
{
actions: ["assignTemplates"],
- target: "waitingForTemplateGetCreated",
cond: "areTemplatesEmpty",
},
{
- actions: ["assignTemplates", "assignPreSelectedTemplate"],
+ actions: ["assignTemplates", "assignSelectedTemplate"],
target: "gettingTemplateSchema",
- cond: "hasValidPreSelectedTemplate",
- },
- {
- actions: ["assignTemplates"],
- target: "selectingTemplate",
},
],
onError: {
@@ -76,33 +56,6 @@ export const createWorkspaceMachine = createMachine(
},
},
},
- waitingForTemplateGetCreated: {
- initial: "refreshingTemplates",
- states: {
- refreshingTemplates: {
- invoke: {
- src: "getTemplates",
- onDone: [
- { target: "waiting", cond: "areTemplatesEmpty" },
- { target: "#createWorkspaceState.selectingTemplate", actions: ["assignTemplates"] },
- ],
- },
- },
- waiting: {
- after: {
- 2_000: "refreshingTemplates",
- },
- },
- },
- },
- selectingTemplate: {
- on: {
- SELECT_TEMPLATE: {
- actions: ["assignSelectedTemplate"],
- target: "gettingTemplateSchema",
- },
- },
- },
gettingTemplateSchema: {
invoke: {
src: "getTemplateSchema",
@@ -164,13 +117,6 @@ export const createWorkspaceMachine = createMachine(
},
},
guards: {
- hasValidPreSelectedTemplate: (ctx, event) => {
- if (!ctx.preSelectedTemplateName) {
- return false
- }
- const template = event.data.find((template) => template.name === ctx.preSelectedTemplateName)
- return !!template
- },
areTemplatesEmpty: (_, event) => event.data.length === 0,
},
actions: {
@@ -178,7 +124,10 @@ export const createWorkspaceMachine = createMachine(
templates: (_, event) => event.data,
}),
assignSelectedTemplate: assign({
- selectedTemplate: (_, event) => event.template,
+ selectedTemplate: (ctx, event) => {
+ const templates = event.data.filter((template) => template.name === ctx.templateName)
+ return templates.length ? templates[0] : undefined
+ },
}),
assignTemplateSchema: assign({
// Only show parameters that are allowed to be overridden.
@@ -188,17 +137,6 @@ export const createWorkspaceMachine = createMachine(
assignCreateWorkspaceRequest: assign({
createWorkspaceRequest: (_, event) => event.request,
}),
- assignPreSelectedTemplate: assign({
- selectedTemplate: (ctx, event) => {
- const selectedTemplate = event.data.find((template) => template.name === ctx.preSelectedTemplateName)
- // The proper validation happens on hasValidPreSelectedTemplate
- if (!selectedTemplate) {
- throw new Error("Invalid template selected")
- }
-
- return selectedTemplate
- },
- }),
},
},
)
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy