5
5
import { assign , createMachine } from "xstate"
6
6
import * as API from "../../api/api"
7
7
import * as TypesGen from "../../api/typesGenerated"
8
- import { displaySuccess } from "../../components/GlobalSnackbar/utils"
9
8
10
9
export const Language = {
11
10
successMessage : "Successfully updated workspace schedule." ,
@@ -24,6 +23,8 @@ export interface WorkspaceScheduleContext {
24
23
permissions ?: Permissions
25
24
checkPermissionsError ?: Error | unknown
26
25
submitScheduleError ?: Error | unknown
26
+ autoStopChanged ?: boolean
27
+ shouldRestartWorkspace ?: boolean
27
28
}
28
29
29
30
export const checks = {
@@ -50,8 +51,12 @@ export type WorkspaceScheduleEvent =
50
51
ttl : TypesGen . UpdateWorkspaceTTLRequest
51
52
autoStopChanged : boolean
52
53
}
54
+ | { type : "RESTART_WORKSPACE" }
55
+ | { type : "APPLY_LATER" }
53
56
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 (
55
60
{
56
61
id : "workspaceScheduleState" ,
57
62
predictableActionArguments : true ,
@@ -110,37 +115,45 @@ export const workspaceSchedule = createMachine(
110
115
} ,
111
116
presentForm : {
112
117
on : {
113
- SUBMIT_SCHEDULE : "submittingSchedule" ,
118
+ SUBMIT_SCHEDULE : { target : "submittingSchedule" , actions : "assignAutoStopChanged" } ,
114
119
} ,
115
120
} ,
116
121
submittingSchedule : {
117
122
invoke : {
118
123
src : "submitSchedule" ,
119
124
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
+ ] ,
124
132
onError : {
125
133
target : "presentForm" ,
126
134
actions : [ "assignSubmissionError" ] ,
127
135
} ,
128
136
} ,
129
137
tags : "loading" ,
130
138
} ,
131
- submitSuccess : {
139
+ showingRestartDialog : {
132
140
on : {
133
- SUBMIT_SCHEDULE : "submittingSchedule" ,
141
+ RESTART_WORKSPACE : { target : "done" , actions : "assignRestartWorkspace" } ,
142
+ APPLY_LATER : "done"
134
143
} ,
135
144
} ,
136
145
error : {
137
146
on : {
138
147
GET_WORKSPACE : "gettingWorkspace" ,
139
148
} ,
140
149
} ,
150
+ done : { }
141
151
} ,
142
152
} ,
143
153
{
154
+ guards : {
155
+ autoStartChanged : ( context ) => Boolean ( context . autoStopChanged )
156
+ } ,
144
157
actions : {
145
158
assignSubmissionError : assign ( {
146
159
submitScheduleError : ( _ , event ) => event . data ,
@@ -159,6 +172,12 @@ export const workspaceSchedule = createMachine(
159
172
assignGetPermissionsError : assign ( {
160
173
checkPermissionsError : ( _ , event ) => event . data ,
161
174
} ) ,
175
+ assignAutoStopChanged : assign ( {
176
+ autoStopChanged : ( _ ) => true
177
+ } ) ,
178
+ assignRestartWorkspace : assign ( {
179
+ shouldRestartWorkspace : ( _ ) => true
180
+ } ) ,
162
181
clearGetPermissionsError : assign ( {
163
182
checkPermissionsError : ( _ ) => undefined ,
164
183
} ) ,
@@ -168,9 +187,6 @@ export const workspaceSchedule = createMachine(
168
187
clearGetWorkspaceError : ( context ) => {
169
188
assign ( { ...context , getWorkspaceError : undefined } )
170
189
} ,
171
- displaySuccess : ( ) => {
172
- displaySuccess ( Language . successMessage )
173
- } ,
174
190
} ,
175
191
176
192
services : {
0 commit comments