@@ -4,22 +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
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
910console . log ( 'GUARD: hasNextStep' , hasNext )
1011return hasNext
1112} ,
1213hasNextStage :( context :CR . MachineContext ) :boolean => {
13- const { data, position} = context
14+ const { data, position, progress } = context
1415const 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
1619console . log ( 'GUARD: hasNextStage' , hasNext )
1720return hasNext
1821} ,
1922hasNextLevel :( context :CR . MachineContext ) :boolean => {
20- const { data, position} = context
23+ const { data, position, progress } = context
2124const 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
2328console . log ( 'GUARD: hasNextLevel' , hasNext )
2429return hasNext
2530} ,