1
1
import { assign , createMachine } from "xstate"
2
2
import * as API from "../../api/api"
3
3
import * as TypesGen from "../../api/typesGenerated"
4
+ import { displayError } from "../../components/GlobalSnackbar/utils"
5
+
6
+ const Language = {
7
+ refreshTemplateError : "Error updating workspace: latest template could not be fetched." ,
8
+ buildError : "Workspace action failed."
9
+ }
4
10
5
11
export interface WorkspaceContext {
6
12
workspace ?: TypesGen . Workspace
@@ -10,8 +16,6 @@ export interface WorkspaceContext {
10
16
getWorkspaceError ?: Error | unknown
11
17
getTemplateError ?: Error | unknown
12
18
getOrganizationError ?: Error | unknown
13
- // error enqueuing a ProvisionerJob to create a new WorkspaceBuild
14
- jobError ?: Error | unknown
15
19
// error creating a new WorkspaceBuild
16
20
buildError ?: Error | unknown
17
21
// these are separate from getX errors because they don't make the page unusable
@@ -160,7 +164,7 @@ export const workspaceMachine = createMachine(
160
164
} ,
161
165
onError : {
162
166
target : "idle" ,
163
- actions : "assignBuildError" ,
167
+ actions : [ "assignBuildError" , "displayBuildError" ] ,
164
168
} ,
165
169
} ,
166
170
} ,
@@ -175,7 +179,7 @@ export const workspaceMachine = createMachine(
175
179
} ,
176
180
onError : {
177
181
target : "idle" ,
178
- actions : "assignBuildError" ,
182
+ actions : [ "assignBuildError" , "displayBuildError" ] ,
179
183
} ,
180
184
} ,
181
185
} ,
@@ -190,7 +194,7 @@ export const workspaceMachine = createMachine(
190
194
} ,
191
195
onError : {
192
196
target : "idle" ,
193
- actions : "assignRefreshTemplateError" ,
197
+ actions : [ "assignRefreshTemplateError" , "displayRefreshTemplateError" ] ,
194
198
} ,
195
199
} ,
196
200
} ,
@@ -244,6 +248,9 @@ export const workspaceMachine = createMachine(
244
248
assign ( {
245
249
buildError : event . data ,
246
250
} ) ,
251
+ displayBuildError : ( _ , event ) => {
252
+ displayError ( Language . buildError )
253
+ } ,
247
254
clearBuildError : ( _ ) =>
248
255
assign ( {
249
256
buildError : undefined ,
@@ -260,6 +267,9 @@ export const workspaceMachine = createMachine(
260
267
assign ( {
261
268
refreshTemplateError : event . data ,
262
269
} ) ,
270
+ displayRefreshTemplateError : ( _ , event ) => {
271
+ displayError ( Language . refreshTemplateError )
272
+ } ,
263
273
clearRefreshTemplateError : ( _ ) =>
264
274
assign ( {
265
275
refreshTemplateError : undefined ,
@@ -273,6 +283,7 @@ export const workspaceMachine = createMachine(
273
283
return await API . getWorkspace ( event . workspaceId )
274
284
} ,
275
285
getTemplate : async ( context ) => {
286
+ console . log ( "get template" , context . template ?. active_version_id )
276
287
if ( context . workspace ) {
277
288
return await API . getTemplate ( context . workspace . template_id )
278
289
} else {
@@ -287,6 +298,7 @@ export const workspaceMachine = createMachine(
287
298
}
288
299
} ,
289
300
startWorkspace : async ( context ) => {
301
+ console . log ( "start workspace" , context . template ?. active_version_id )
290
302
if ( context . workspace ) {
291
303
return await API . startWorkspace ( context . workspace . id , context . template ?. active_version_id )
292
304
} else {
0 commit comments