@@ -58,6 +58,9 @@ export const workspaceMachine = createMachine(
58
58
getWorkspace : {
59
59
data : TypesGen . Workspace
60
60
}
61
+ getDeletedWorkspace : {
62
+ data : TypesGen . Workspace
63
+ }
61
64
getTemplate : {
62
65
data : TypesGen . Template
63
66
}
@@ -93,6 +96,9 @@ export const workspaceMachine = createMachine(
93
96
idle : {
94
97
tags : "loading" ,
95
98
} ,
99
+ deleted : {
100
+ tags : "deleted" ,
101
+ } ,
96
102
gettingWorkspace : {
97
103
entry : [ "clearGetWorkspaceError" , "clearContext" ] ,
98
104
invoke : {
@@ -183,10 +189,10 @@ export const workspaceMachine = createMachine(
183
189
requestingDelete : {
184
190
entry : "clearBuildError" ,
185
191
invoke : {
186
- id : "deleteWorkspace" ,
192
+ id : "deleteWorkspace" , // delete the workspace
187
193
src : "deleteWorkspace" ,
188
194
onDone : {
189
- target : "idle " ,
195
+ target : "gettingDeletedWorkspace " ,
190
196
actions : [ "assignBuild" , "refreshTimeline" ] ,
191
197
} ,
192
198
onError : {
@@ -195,6 +201,21 @@ export const workspaceMachine = createMachine(
195
201
} ,
196
202
} ,
197
203
} ,
204
+ gettingDeletedWorkspace : {
205
+ entry : [ "clearGetWorkspaceError" , "clearContext" ] ,
206
+ invoke : {
207
+ id : "getDeletedWorkspace" , // request deleted workspace
208
+ src : "getDeletedWorkspace" ,
209
+ onDone : {
210
+ target : "idle" ,
211
+ actions : [ "assignBuild" , "refreshTimeline" ] ,
212
+ } ,
213
+ onError : {
214
+ target : "idle" , // error
215
+ actions : [ "assignBuildError" , "displayBuildError" ] ,
216
+ } ,
217
+ } ,
218
+ } ,
198
219
requestingCancel : {
199
220
entry : "clearCancellationMessage" ,
200
221
invoke : {
@@ -433,6 +454,13 @@ export const workspaceMachine = createMachine(
433
454
getWorkspace : async ( _ , event ) => {
434
455
return await API . getWorkspaceByOwnerAndName ( event . username , event . workspaceName )
435
456
} ,
457
+ getDeletedWorkspace : async ( context ) => {
458
+ if ( context . workspace ) {
459
+ return await API . getWorkspace ( context . workspace . id , { deleted : true } )
460
+ } else {
461
+ throw Error ( "Cannot get workspace without id" )
462
+ }
463
+ } ,
436
464
getTemplate : async ( context ) => {
437
465
if ( context . workspace ) {
438
466
return await API . getTemplate ( context . workspace . template_id )
0 commit comments