|
1 | | -import {send} from 'xstate' |
2 | | -// import {machine} from '../../extension' |
3 | | -// import {cache} from '../../services/apollo' |
4 | | -// import {editorDispatch} from '../../services/vscode' |
5 | | -import * as CR from 'typings' |
6 | | -import * as G from 'typings/graphql' |
7 | | -// import tutorialConfig from '../../services/apollo/queries/tutorialConfig' |
8 | 1 | import editorActions from './editor' |
9 | 2 | import contextActions from './context' |
| 3 | +import apiActions from './api' |
10 | 4 |
|
11 | 5 | export default { |
12 | | - newOrContinue: send((context: CR.MachineContext): 'NEW' | 'CONTINUE' => { |
13 | | - console.log('new or continue') |
14 | | - |
15 | | - // TODO: verify that the user has an existing tutorial to continue |
16 | | - const hasExistingTutorial: boolean = false |
17 | | - return hasExistingTutorial ? 'CONTINUE' : 'NEW' |
18 | | - }), |
19 | | - stepNext: send((context: CR.MachineContext): CR.Action => { |
20 | | - const {tutorial, position, progress} = context |
21 | | - // TODO: protect against errors |
22 | | - const steps: G.Step[] = tutorial.version |
23 | | - .levels.find((l: G.Level) => l.id === position.levelId) |
24 | | - .stages.find((s: G.Stage) => s.id === position.stageId) |
25 | | - .steps |
26 | | - |
27 | | - // TODO: verify not -1 |
28 | | - const stepIndex = steps.findIndex((s: G.Step) => s.id === position.stepId) |
29 | | - const finalStep = stepIndex === steps.length - 1 |
30 | | - const stepComplete = progress.steps[position.stepId] |
31 | | - // not final step, or final step but not complete |
32 | | - const hasNextStep = !finalStep || !stepComplete |
33 | | - |
34 | | - if (hasNextStep) { |
35 | | - const nextStep = steps[stepIndex + 1] |
36 | | - return { |
37 | | - type: 'LOAD_NEXT_STEP', |
38 | | - payload: { |
39 | | - step: nextStep |
40 | | - } |
41 | | - } |
42 | | - } else { |
43 | | - return { |
44 | | - type: 'STAGE_COMPLETE' |
45 | | - } |
46 | | - } |
47 | | - |
48 | | - }), |
49 | 6 | ...editorActions, |
50 | 7 | ...contextActions, |
| 8 | + ...apiActions, |
51 | 9 | } |
52 | | - |
53 | | -// export default { |
54 | | -// async newOrContinue() { |
55 | | -// // verify that the user has an existing tutorial to continue |
56 | | -// // const hasExistingTutorial: boolean = await tutorialModel.hasExisting() |
57 | | -// // machine.send(hasExistingTutorial ? 'CONTINUE' : 'NEW') |
58 | | -// }, |
59 | | -// testRunnerSetup() { |
60 | | -// const result = cache.readQuery({query: tutorialConfig}) |
61 | | -// console.log('result', result) |
62 | | -// // const codingLanguage: G.EnumCodingLanguage = result.data.codingLanguage |
63 | | -// // editorDispatch('coderoad.test_runner_setup', codingLanguage) |
64 | | -// }, |
65 | | -// initializeNewTutorial: assign({ |
66 | | -// position: (context: any): CR.Position => { |
67 | | -// const { tutorial } = context |
68 | | -// const levelId = data.summary.levelList[0] |
69 | | -// const stageId = data.levels[levelId].stageList[0] |
70 | | -// const stepId = data.stages[stageId].stepList[0] |
71 | | -// return { |
72 | | -// levelId, |
73 | | -// stageId, |
74 | | -// stepId, |
75 | | -// } |
76 | | -// }, |
77 | | -// }) |
78 | | -// tutorialContinue() { |
79 | | -// console.log('tutorial continue') |
80 | | -// }, |
81 | | -// testStart() { |
82 | | -// editorDispatch('coderoad.run_test') |
83 | | -// }, |
84 | | -// testPass(): void { |
85 | | -// editorDispatch('coderoad.test_pass') |
86 | | -// // git.gitSaveCommit(tutorialModel.position) |
87 | | -// }, |
88 | | -// testFail() { |
89 | | -// editorDispatch('coderoad.test_fail') |
90 | | -// }, |
91 | | -// // @ts-ignore |
92 | | -// progressUpdate() { |
93 | | -// // tutorialModel.updateProgress() |
94 | | -// // tutorialModel.nextPosition() |
95 | | -// }, |
96 | | - |
97 | | -// stageLoadNext() { |
98 | | -// console.log('stageLoadNext') |
99 | | -// // tutorialModel.nextPosition() |
100 | | -// }, |
101 | | -// loadStage(): void { |
102 | | -// // tutorialModel.triggerCurrent('STAGE') |
103 | | -// }, |
104 | | -// stepLoadCommits(): void { |
105 | | -// // tutorialModel.triggerCurrent('STEP') |
106 | | -// }, |
107 | | -// } |
0 commit comments