|
1 |
| -// import * as CR from 'typings' |
2 |
| -// import {TutorialModel} from '../../services/tutorial' |
3 |
| - |
4 |
| - |
5 |
| -export default {} |
| 1 | +import * as G from 'typings/graphql' |
| 2 | +import * as CR from 'typings' |
6 | 3 |
|
7 | 4 | // // TODO: refactor into a single calculation
|
8 |
| -// export default (tutorialModel: TutorialModel) => ({ |
9 |
| -// hasNextStep: (): boolean => { |
10 |
| - |
11 |
| -// const nextPosition: CR.Position = tutorialModel.nextPosition() |
12 |
| - |
13 |
| -// const sameStage = nextPosition.stageId === tutorialModel.position.stageId |
14 |
| -// const sameStep = nextPosition.stepId === tutorialModel.position.stepId |
15 |
| - |
16 |
| -// const hasNext: boolean = sameStage && sameStep |
17 |
| - |
18 |
| -// console.log('GUARD: hasNextStep', hasNext) |
19 |
| -// return hasNext |
20 |
| -// }, |
21 |
| -// hasNextStage: (): boolean => { |
22 |
| -// const nextPosition: CR.Position = tutorialModel.nextPosition() |
23 |
| - |
24 |
| -// const sameLevel = nextPosition.levelId === tutorialModel.position.levelId |
25 |
| -// const sameStage = nextPosition.stageId === tutorialModel.position.stageId |
26 |
| - |
27 |
| -// const hasNext: boolean = sameLevel && sameStage |
28 |
| - |
29 |
| -// console.log('GUARD: hasNextStage', hasNext) |
30 |
| -// return hasNext |
31 |
| -// }, |
32 |
| -// hasNextLevel: (): boolean => { |
33 |
| -// const nextPosition: CR.Position = tutorialModel.nextPosition() |
34 |
| - |
35 |
| -// const sameLevel = nextPosition.levelId === tutorialModel.position.levelId |
36 |
| - |
37 |
| -// const hasNext: boolean = sameLevel |
38 |
| - |
39 |
| -// // TODO: ensure this accounts for end |
40 |
| -// console.log('GUARD: hasNextLevel', hasNext) |
41 |
| -// return hasNext |
42 |
| -// }, |
43 |
| -// }) |
| 5 | +export default { |
| 6 | + hasNextStep: (context: CR.MachineContext): boolean => { |
| 7 | + const {tutorial, position} = context |
| 8 | + // TODO: protect against errors |
| 9 | + const steps: G.Step[] = tutorial.version.levels.find((l: G.Level) => l.id === position.levelId).stages.find((s: G.Stage) => s.id === position.stageId).steps |
| 10 | + |
| 11 | + // TODO: verify not -1 |
| 12 | + return !(steps.indexOf(position.stepId) === steps.length - 1) |
| 13 | + }, |
| 14 | + hasNextStage: (context: CR.MachineContext): boolean => { |
| 15 | + const {tutorial, position} = context |
| 16 | + // TODO: protect against errors |
| 17 | + const stages: G.Stage[] = tutorial.version.levels.find((l: G.Level) => l.id === position.levelId).stages |
| 18 | + |
| 19 | + // TODO: verify not -1 |
| 20 | + return !(stages.indexOf(position.stageId) === stages.length - 1) |
| 21 | + }, |
| 22 | + hasNextLevel: (context: CR.MachineContext): boolean => { |
| 23 | + const {tutorial, position} = context |
| 24 | + // TODO: protect against errors |
| 25 | + const levels: G.Level[] = tutorial.version.levels |
| 26 | + |
| 27 | + // TODO: verify not -1 |
| 28 | + return !(levels.indexOf(position.levelId) === levels.length - 1) |
| 29 | + }, |
| 30 | +} |
0 commit comments