@@ -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)
0 commit comments