@@ -113,57 +113,26 @@ export default {
113
113
vscode . window . showWarningMessage ( 'FAIL' )
114
114
} ,
115
115
//@ts -ignore
116
- stepComplete :assign ( {
116
+ progressUpdate :assign ( {
117
117
progress :( context :CR . MachineContext ) :CR . Progress => {
118
- const nextProgress = {
119
- ...context . progress ,
120
- steps :{
121
- ...context . progress . steps ,
122
- [ context . position . stepId ] :true ,
123
- }
124
- }
125
- console . log ( 'progress update' , nextProgress )
126
- storage . setProgress ( nextProgress )
127
- return nextProgress
128
- }
129
- } ) ,
130
- //@ts -ignore
131
- stageComplete :assign ( {
132
- progress :( context :CR . MachineContext ) :CR . Progress => {
133
- const nextProgress = {
134
- ...context . progress ,
135
- stages :{
136
- ...context . progress . stages ,
137
- [ context . position . stageId ] :true ,
138
- }
139
- }
140
- console . log ( 'progress update' , nextProgress )
141
- storage . setProgress ( nextProgress )
142
- return nextProgress
143
- }
144
- } ) ,
145
- //@ts -ignore
146
- levelComplete :assign ( {
147
- progress :( context :CR . MachineContext ) :CR . Progress => {
148
- const nextProgress = {
149
- ...context . progress ,
150
- levels :{
151
- ...context . progress . levels ,
152
- [ context . position . levelId ] :true ,
153
- }
154
- }
155
- console . log ( 'progress update' , nextProgress )
156
- storage . setProgress ( nextProgress )
157
- return nextProgress
118
+ const { progress, position, data} = context
119
+ const nextProgress = progress
158
120
159
- }
160
- } ) ,
161
- //@ts -ignore
162
- tutorialComplete :assign ( {
163
- progress :( context :CR . MachineContext ) :CR . Progress => {
164
- const nextProgress = {
165
- ...context . progress ,
166
- complete :true ,
121
+ nextProgress . steps [ position . stepId ] = true
122
+ const { stepList} = data . stages [ position . stageId ]
123
+ const stageComplete = stepList [ stepList . length - 1 ] === position . stepId
124
+ if ( stageComplete ) {
125
+ nextProgress . stages [ position . stageId ] = true
126
+ const { stageList} = data . levels [ position . levelId ]
127
+ const levelComplete = stageList [ stageList . length - 1 ] === position . stageId
128
+ if ( levelComplete ) {
129
+ nextProgress . levels [ position . levelId ] = true
130
+ const { levelList} = data . summary
131
+ const tutorialComplete = levelList [ levelList . length - 1 ] === position . levelId
132
+ if ( tutorialComplete ) {
133
+ nextProgress . complete = true
134
+ }
135
+ }
167
136
}
168
137
console . log ( 'progress update' , nextProgress )
169
138
storage . setProgress ( nextProgress )