@@ -55,171 +55,180 @@ export type WorkspaceScheduleEvent =
55
55
| { type : "APPLY_LATER" }
56
56
57
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 (
60
- {
61
- id : "workspaceScheduleState" ,
62
- predictableActionArguments : true ,
63
- tsTypes : { } as import ( "./workspaceScheduleXService.typegen" ) . Typegen0 ,
64
- schema : {
65
- context : { } as WorkspaceScheduleContext ,
66
- events : { } as WorkspaceScheduleEvent ,
67
- services : { } as {
68
- getWorkspace : {
69
- data : TypesGen . Workspace
70
- }
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 (
60
+ {
61
+ id : "workspaceScheduleState" ,
62
+ predictableActionArguments : true ,
63
+ tsTypes : { } as import ( "./workspaceScheduleXService.typegen" ) . Typegen0 ,
64
+ schema : {
65
+ context : { } as WorkspaceScheduleContext ,
66
+ events : { } as WorkspaceScheduleEvent ,
67
+ services : { } as {
68
+ getWorkspace : {
69
+ data : TypesGen . Workspace
70
+ }
71
+ } ,
71
72
} ,
72
- } ,
73
- initial : "idle" ,
74
- on : {
75
- GET_WORKSPACE : "gettingWorkspace" ,
76
- } ,
77
- states : {
78
- idle : {
79
- tags : "loading" ,
73
+ initial : "idle" ,
74
+ on : {
75
+ GET_WORKSPACE : "gettingWorkspace" ,
80
76
} ,
81
- gettingWorkspace : {
82
- entry : [ "clearGetWorkspaceError" , "clearContext" ] ,
83
- invoke : {
84
- src : "getWorkspace" ,
85
- id : "getWorkspace" ,
86
- onDone : {
87
- target : "gettingPermissions" ,
88
- actions : [ "assignWorkspace" ] ,
89
- } ,
90
- onError : {
91
- target : "error" ,
92
- actions : [ "assignGetWorkspaceError" ] ,
93
- } ,
77
+ states : {
78
+ idle : {
79
+ tags : "loading" ,
94
80
} ,
95
- tags : "loading" ,
96
- } ,
97
- gettingPermissions : {
98
- entry : "clearGetPermissionsError" ,
99
- invoke : {
100
- src : "checkPermissions" ,
101
- id : "checkPermissions" ,
102
- onDone : [
103
- {
104
- actions : [ "assignPermissions" ] ,
105
- target : "presentForm" ,
81
+ gettingWorkspace : {
82
+ entry : [ "clearGetWorkspaceError" , "clearContext" ] ,
83
+ invoke : {
84
+ src : "getWorkspace" ,
85
+ id : "getWorkspace" ,
86
+ onDone : {
87
+ target : "gettingPermissions" ,
88
+ actions : [ "assignWorkspace" ] ,
106
89
} ,
107
- ] ,
108
- onError : [
109
- {
110
- actions : "assignGetPermissionsError" ,
90
+ onError : {
111
91
target : "error" ,
92
+ actions : [ "assignGetWorkspaceError" ] ,
112
93
} ,
113
- ] ,
94
+ } ,
95
+ tags : "loading" ,
114
96
} ,
115
- } ,
116
- presentForm : {
117
- on : {
118
- SUBMIT_SCHEDULE : { target : "submittingSchedule" , actions : "assignAutoStopChanged" } ,
97
+ gettingPermissions : {
98
+ entry : "clearGetPermissionsError" ,
99
+ invoke : {
100
+ src : "checkPermissions" ,
101
+ id : "checkPermissions" ,
102
+ onDone : [
103
+ {
104
+ actions : [ "assignPermissions" ] ,
105
+ target : "presentForm" ,
106
+ } ,
107
+ ] ,
108
+ onError : [
109
+ {
110
+ actions : "assignGetPermissionsError" ,
111
+ target : "error" ,
112
+ } ,
113
+ ] ,
114
+ } ,
119
115
} ,
120
- } ,
121
- submittingSchedule : {
122
- invoke : {
123
- src : "submitSchedule" ,
124
- id : "submitSchedule" ,
125
- onDone : [
126
- {
127
- cond : "autoStartChanged" ,
128
- target : "showingRestartDialog" ,
116
+ presentForm : {
117
+ on : {
118
+ SUBMIT_SCHEDULE : {
119
+ target : "submittingSchedule" ,
120
+ actions : "assignAutoStopChanged" ,
129
121
} ,
130
- { target : "done" }
131
- ] ,
132
- onError : {
133
- target : "presentForm" ,
134
- actions : [ "assignSubmissionError" ] ,
135
122
} ,
136
123
} ,
137
- tags : "loading" ,
138
- } ,
139
- showingRestartDialog : {
140
- on : {
141
- RESTART_WORKSPACE : { target : "done" , actions : "assignRestartWorkspace" } ,
142
- APPLY_LATER : "done"
124
+ submittingSchedule : {
125
+ invoke : {
126
+ src : "submitSchedule" ,
127
+ id : "submitSchedule" ,
128
+ onDone : [
129
+ {
130
+ cond : "autoStartChanged" ,
131
+ target : "showingRestartDialog" ,
132
+ } ,
133
+ { target : "done" } ,
134
+ ] ,
135
+ onError : {
136
+ target : "presentForm" ,
137
+ actions : [ "assignSubmissionError" ] ,
138
+ } ,
139
+ } ,
140
+ tags : "loading" ,
143
141
} ,
144
- } ,
145
- error : {
146
- on : {
147
- GET_WORKSPACE : "gettingWorkspace" ,
142
+ showingRestartDialog : {
143
+ on : {
144
+ RESTART_WORKSPACE : {
145
+ target : "done" ,
146
+ actions : "assignRestartWorkspace" ,
147
+ } ,
148
+ APPLY_LATER : "done" ,
149
+ } ,
150
+ } ,
151
+ error : {
152
+ on : {
153
+ GET_WORKSPACE : "gettingWorkspace" ,
154
+ } ,
148
155
} ,
156
+ done : { } ,
149
157
} ,
150
- done : { }
151
158
} ,
152
- } ,
153
- {
154
- guards : {
155
- autoStartChanged : ( context ) => Boolean ( context . autoStopChanged )
156
- } ,
157
- actions : {
158
- assignSubmissionError : assign ( {
159
- submitScheduleError : ( _ , event ) => event . data ,
160
- } ) ,
161
- assignWorkspace : assign ( {
162
- workspace : ( _ , event ) => event . data ,
163
- } ) ,
164
- assignGetWorkspaceError : assign ( {
165
- getWorkspaceError : ( _ , event ) => event . data ,
166
- } ) ,
167
- assignPermissions : assign ( {
168
- // Setting event.data as Permissions to be more stricted. So we know
169
- // what permissions we asked for.
170
- permissions : ( _ , event ) => event . data as Permissions ,
171
- } ) ,
172
- assignGetPermissionsError : assign ( {
173
- checkPermissionsError : ( _ , event ) => event . data ,
174
- } ) ,
175
- assignAutoStopChanged : assign ( {
176
- autoStopChanged : ( _ ) => true
177
- } ) ,
178
- assignRestartWorkspace : assign ( {
179
- shouldRestartWorkspace : ( _ ) => true
180
- } ) ,
181
- clearGetPermissionsError : assign ( {
182
- checkPermissionsError : ( _ ) => undefined ,
183
- } ) ,
184
- clearContext : ( ) => {
185
- assign ( { workspace : undefined , permissions : undefined } )
159
+ {
160
+ guards : {
161
+ autoStartChanged : ( context ) => Boolean ( context . autoStopChanged ) ,
186
162
} ,
187
- clearGetWorkspaceError : ( context ) => {
188
- assign ( { ...context , getWorkspaceError : undefined } )
163
+ actions : {
164
+ assignSubmissionError : assign ( {
165
+ submitScheduleError : ( _ , event ) => event . data ,
166
+ } ) ,
167
+ assignWorkspace : assign ( {
168
+ workspace : ( _ , event ) => event . data ,
169
+ } ) ,
170
+ assignGetWorkspaceError : assign ( {
171
+ getWorkspaceError : ( _ , event ) => event . data ,
172
+ } ) ,
173
+ assignPermissions : assign ( {
174
+ // Setting event.data as Permissions to be more stricted. So we know
175
+ // what permissions we asked for.
176
+ permissions : ( _ , event ) => event . data as Permissions ,
177
+ } ) ,
178
+ assignGetPermissionsError : assign ( {
179
+ checkPermissionsError : ( _ , event ) => event . data ,
180
+ } ) ,
181
+ assignAutoStopChanged : assign ( {
182
+ autoStopChanged : ( _ , event ) => event . autoStopChanged ,
183
+ } ) ,
184
+ assignRestartWorkspace : assign ( {
185
+ shouldRestartWorkspace : ( _ ) => true ,
186
+ } ) ,
187
+ clearGetPermissionsError : assign ( {
188
+ checkPermissionsError : ( _ ) => undefined ,
189
+ } ) ,
190
+ clearContext : ( ) => {
191
+ assign ( { workspace : undefined , permissions : undefined } )
192
+ } ,
193
+ clearGetWorkspaceError : ( context ) => {
194
+ assign ( { ...context , getWorkspaceError : undefined } )
195
+ } ,
189
196
} ,
190
- } ,
191
197
192
- services : {
193
- getWorkspace : async ( _ , event ) => {
194
- return await API . getWorkspaceByOwnerAndName (
195
- event . username ,
196
- event . workspaceName ,
197
- )
198
- } ,
199
- checkPermissions : async ( context ) => {
200
- if ( context . workspace ) {
201
- return await API . checkAuthorization ( {
202
- checks : permissionsToCheck ( context . workspace ) ,
203
- } )
204
- } else {
205
- throw Error (
206
- "Cannot check permissions without both workspace and user id" ,
198
+ services : {
199
+ getWorkspace : async ( _ , event ) => {
200
+ return await API . getWorkspaceByOwnerAndName (
201
+ event . username ,
202
+ event . workspaceName ,
207
203
)
208
- }
209
- } ,
210
- submitSchedule : async ( context , event ) => {
211
- if ( ! context . workspace ?. id ) {
212
- // This state is theoretically impossible, but helps TS
213
- throw new Error ( "Failed to load workspace." )
214
- }
204
+ } ,
205
+ checkPermissions : async ( context ) => {
206
+ if ( context . workspace ) {
207
+ return await API . checkAuthorization ( {
208
+ checks : permissionsToCheck ( context . workspace ) ,
209
+ } )
210
+ } else {
211
+ throw Error (
212
+ "Cannot check permissions without both workspace and user id" ,
213
+ )
214
+ }
215
+ } ,
216
+ submitSchedule : async ( context , event ) => {
217
+ if ( ! context . workspace ?. id ) {
218
+ // This state is theoretically impossible, but helps TS
219
+ throw new Error ( "Failed to load workspace." )
220
+ }
215
221
216
- if ( event . autoStartChanged ) {
217
- await API . putWorkspaceAutostart ( context . workspace . id , event . autoStart )
218
- }
219
- if ( event . autoStopChanged ) {
220
- await API . putWorkspaceAutostop ( context . workspace . id , event . ttl )
221
- }
222
+ if ( event . autoStartChanged ) {
223
+ await API . putWorkspaceAutostart (
224
+ context . workspace . id ,
225
+ event . autoStart ,
226
+ )
227
+ }
228
+ if ( event . autoStopChanged ) {
229
+ await API . putWorkspaceAutostop ( context . workspace . id , event . ttl )
230
+ }
231
+ } ,
222
232
} ,
223
233
} ,
224
- } ,
225
- )
234
+ )
0 commit comments