@@ -4,23 +4,27 @@ export default {
44hasNextStep :( context :CR . MachineContext ) :boolean => {
55const { data, position, progress} = context
66const steps = data . stages [ position . stageId ] . stepList
7- // isn't final step yet
87const 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
1010console . log ( 'GUARD: hasNextStep' , hasNext )
1111return hasNext
1212} ,
1313hasNextStage :( context :CR . MachineContext ) :boolean => {
14- const { data, position} = context
14+ const { data, position, progress } = context
1515const 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
1719console . log ( 'GUARD: hasNextStage' , hasNext )
1820return hasNext
1921} ,
2022hasNextLevel :( context :CR . MachineContext ) :boolean => {
21- const { data, position} = context
23+ const { data, position, progress } = context
2224const 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
2428console . log ( 'GUARD: hasNextLevel' , hasNext )
2529return hasNext
2630} ,