Skip to content

Commit e3fb8cc

Browse files
committed
Update xstate machine
1 parent 8ea0923 commit e3fb8cc

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

site/src/xServices/workspaceSchedule/workspaceScheduleXService.ts

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import { assign, createMachine } from "xstate"
66
import * as API from "../../api/api"
77
import * as TypesGen from "../../api/typesGenerated"
8-
import { displaySuccess } from "../../components/GlobalSnackbar/utils"
98

109
export const Language = {
1110
successMessage: "Successfully updated workspace schedule.",
@@ -24,6 +23,8 @@ export interface WorkspaceScheduleContext {
2423
permissions?: Permissions
2524
checkPermissionsError?: Error | unknown
2625
submitScheduleError?: Error | unknown
26+
autoStopChanged?: boolean
27+
shouldRestartWorkspace?: boolean
2728
}
2829

2930
export const checks = {
@@ -50,8 +51,12 @@ export type WorkspaceScheduleEvent =
5051
ttl: TypesGen.UpdateWorkspaceTTLRequest
5152
autoStopChanged: boolean
5253
}
54+
| { type: "RESTART_WORKSPACE" }
55+
| { type: "APPLY_LATER" }
5356

54-
export const workspaceSchedule = createMachine(
57+
export const workspaceSchedule =
58+
/** @xstate-layout N4IgpgJg5mDOIC5QHcD2AnA1rADgQwGMwBlAgC0gFcAbEgFzzrAGIBxAUQBUB9AdQHkASgGliABQCCAYXYBtAAwBdRKBypYASzobUAOxUgAHogCMAJgB0AVgAcAThsAWeXZMA2O2YDsdq1YA0IACeiGbyFl428o4AzFYmMT4xbl5mAL5pgWhYuIQk5FS0xAxMFjB02rpQvBjY+ETMEHpgFhq6AG6omC3lNTn1YArKSCBqmtp6BsYI7tbybmZ+9mYO8u6OgSEIMY6OFo5eC34mdqkLNhlZtblEpBQQNPSMPWAVbdXXA8xg6OgYFjhqIwAGYYAC2ZVefTqeSGBjGWh0+hG02SNmsXhMVhWdkcbkcNm8Xk2oRcFgW7hi8h8djcVkuIGyMNuBQeRRKLzeVTEPzBGlgmj0sEazVaHS6LQKBEwPPQfIFSNgcJGCImyNA0wAtOEYrjsa4vD5bMkEiSEG44uTFosCa41lY3AymTd8vdHsVnpCuVBZfLBbphT8-ugAUC6KC5RYpTLefz-UqlPD1IjJijEMkrBE3G4bO5cfN5GYzGadnsDgt5rmnFZHL4nZ88ndCk9Sjh0HAwLo6AAxcHMYgAVQAQgBZACSPGIUgAEuwACIDgAyckTKuTaqmiEzqTMdOzJixJi82OLwUQNic5MxrjxusS5nr-UbrPdHIssEoACM+d6m2yWE0ugtG0nTdO+X4-n+jzKqo65IpuMx7CYF7ZjYMSJLihpeBsZ4zO4Jj7HahomPINaEo4j7Mq6zYeqUH7flolRQFBtAikBYqgS09GQS+tCyCYwyweM8Fpggjg1hYu5UrqZiOCsjjmGaB5uARtYkfq7jUjYjqZIyDYsm67KetxjHvCxLBBv8gIguC4EMXQ5kwaMcGphq6YpBEB4JFYuqxN4Jhmq4bj7CkiReNEpykSYlEuuZtFcWQqDIO8ghwAw6B0HOGh4NQqBQMwgjsMQnASIIPACCI4jSCugnOcJrlGOeMT7LYyExMhClybESmJMFrU2OFDo+OYOlXE+Bk0W+sCJclVSpbA6WZdluX5RIYhiIuACa3CLhInDsIITmqiJbnbG4Oq1gpaxOHmMRKWY2kWPYObnehOwxDFAxxW+lnoGwXB8EIoiSDIR0ueqjXbFYdgWKcVZmCN5x+EpBJPa4ngmLE8jtV4GS6boqAQHABjOl9vEtmASb1RDWqo75GmGr4aFuGampYpYTgI-IUS+Nzhy47ppPPoZFOtBAtBUymNOmOEUQ1nidJWMe1IPazdIWDsXMHseXgxFEAtjVR32euUTHQi6ksbqJXgWPI8y1rJix23ESso3sdvRLrKxmDEjvpIL+nUf+8VekxvpxoqlsnZD6K5nYLhHnJNjYmsZoEjbuu+ASJqdbrn3C5Nnpth2Xa9nKUcNdMuxPdjaFOFS2ErGakTNQjDu3qkJF2PnE3B1NEGmVU5kV9LMzhNDSvzBa1IqZ4OFbLSMMWj7OZoXrhIfQH41B6+xkzSlaV4BlWU5XlI8ISReyYbJ5h2A4cnI7hI2ZtmcSRNpOZxP7huxeTIe-efUSthMyyU8PHO+R4LRKQks4HMmMDhfzWNFLeRs-5vkApTNc1MEK6hAe4c6pE6QDTCCzJ+tZY4nD1qkdCqQBYZCAA */
59+
createMachine(
5560
{
5661
id: "workspaceScheduleState",
5762
predictableActionArguments: true,
@@ -110,37 +115,45 @@ export const workspaceSchedule = createMachine(
110115
},
111116
presentForm: {
112117
on: {
113-
SUBMIT_SCHEDULE: "submittingSchedule",
118+
SUBMIT_SCHEDULE: { target: "submittingSchedule", actions: "assignAutoStopChanged" },
114119
},
115120
},
116121
submittingSchedule: {
117122
invoke: {
118123
src: "submitSchedule",
119124
id: "submitSchedule",
120-
onDone: {
121-
target: "submitSuccess",
122-
actions: "displaySuccess",
123-
},
125+
onDone: [
126+
{
127+
cond: "autoStartChanged",
128+
target: "showingRestartDialog",
129+
},
130+
{ target: "done" }
131+
],
124132
onError: {
125133
target: "presentForm",
126134
actions: ["assignSubmissionError"],
127135
},
128136
},
129137
tags: "loading",
130138
},
131-
submitSuccess: {
139+
showingRestartDialog: {
132140
on: {
133-
SUBMIT_SCHEDULE: "submittingSchedule",
141+
RESTART_WORKSPACE: { target: "done", actions: "assignRestartWorkspace" },
142+
APPLY_LATER: "done"
134143
},
135144
},
136145
error: {
137146
on: {
138147
GET_WORKSPACE: "gettingWorkspace",
139148
},
140149
},
150+
done: {}
141151
},
142152
},
143153
{
154+
guards: {
155+
autoStartChanged: (context) => Boolean(context.autoStopChanged)
156+
},
144157
actions: {
145158
assignSubmissionError: assign({
146159
submitScheduleError: (_, event) => event.data,
@@ -159,6 +172,12 @@ export const workspaceSchedule = createMachine(
159172
assignGetPermissionsError: assign({
160173
checkPermissionsError: (_, event) => event.data,
161174
}),
175+
assignAutoStopChanged: assign({
176+
autoStopChanged: (_) => true
177+
}),
178+
assignRestartWorkspace: assign({
179+
shouldRestartWorkspace: (_) => true
180+
}),
162181
clearGetPermissionsError: assign({
163182
checkPermissionsError: (_) => undefined,
164183
}),
@@ -168,9 +187,6 @@ export const workspaceSchedule = createMachine(
168187
clearGetWorkspaceError: (context) => {
169188
assign({ ...context, getWorkspaceError: undefined })
170189
},
171-
displaySuccess: () => {
172-
displaySuccess(Language.successMessage)
173-
},
174190
},
175191

176192
services: {

0 commit comments

Comments
 (0)