@@ -4,22 +4,27 @@ export default {
44 hasNextStep : ( context : CR . MachineContext ) : boolean => {
55 const { data, position, progress } = context
66 const steps = data . stages [ position . stageId ] . stepList
7- // isn't final step yet
8- const hasNext = ! ! position . stepId && ( steps [ steps . length - 1 ] !== position . stepId ) || ! progress . stages [ position . stageId ]
7+ const stageIncomplete = ! progress . stages [ position . stageId ]
8+ const isNotFinalStep = ( ! ! position . stepId && ( steps [ steps . length - 1 ] !== position . stepId ) )
9+ const hasNext = stageIncomplete || isNotFinalStep
910 console . log ( 'GUARD: hasNextStep' , hasNext )
1011 return hasNext
1112 } ,
1213 hasNextStage : ( context : CR . MachineContext ) : boolean => {
13- const { data, position } = context
14+ const { data, position, progress } = context
1415 const stages = data . levels [ position . levelId ] . stageList
15- const hasNext = ! ! position . stageId && stages [ stages . length - 1 ] !== position . stageId
16+ const stageComplete = progress . stages [ position . stageId ]
17+ const isNotFinalStage = ! ! position . stageId && stages [ stages . length - 1 ] !== position . stageId
18+ const hasNext = stageComplete && isNotFinalStage
1619 console . log ( 'GUARD: hasNextStage' , hasNext )
1720 return hasNext
1821 } ,
1922 hasNextLevel : ( context : CR . MachineContext ) : boolean => {
20- const { data, position } = context
23+ const { data, position, progress } = context
2124 const levels = data . summary . levelList
22- const hasNext = ! ! position . levelId && levels [ levels . length - 1 ] !== position . levelId
25+ const levelComplete = progress . levels [ position . levelId ]
26+ const isNotFinalLevel = ! ! position . levelId && levels [ levels . length - 1 ] !== position . levelId
27+ const hasNext = levelComplete && isNotFinalLevel
2328 console . log ( 'GUARD: hasNextLevel' , hasNext )
2429 return hasNext
2530 } ,
0 commit comments