@@ -4,23 +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
87 const stageIncomplete = ! progress . stages [ position . stageId ]
9- const hasNext = stageIncomplete && ( ! ! position . stepId && ( steps [ steps . length - 1 ] !== position . stepId ) )
8+ const isNotFinalStep = ( ! ! position . stepId && ( steps [ steps . length - 1 ] !== position . stepId ) )
9+ const hasNext = stageIncomplete || isNotFinalStep
1010 console . log ( 'GUARD: hasNextStep' , hasNext )
1111 return hasNext
1212 } ,
1313 hasNextStage : ( context : CR . MachineContext ) : boolean => {
14- const { data, position } = context
14+ const { data, position, progress } = context
1515 const stages = data . levels [ position . levelId ] . stageList
16- 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
1719 console . log ( 'GUARD: hasNextStage' , hasNext )
1820 return hasNext
1921 } ,
2022 hasNextLevel : ( context : CR . MachineContext ) : boolean => {
21- const { data, position } = context
23+ const { data, position, progress } = context
2224 const levels = data . summary . levelList
23- 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
2428 console . log ( 'GUARD: hasNextLevel' , hasNext )
2529 return hasNext
2630 } ,
0 commit comments