11import * as React from 'react'
2- import { ApolloProvider } from '@apollo/react-hooks'
2+ import { ApolloProvider , useMutation } from '@apollo/react-hooks'
33import * as CR from 'typings'
44
55import client from './services/apollo'
6+ import { SET_STATUS } from './services/apollo/mutations'
67import Debugger from './components/Debugger'
78import Routes from './Routes'
8- import DataContext , { initialData , initialState } from './utils/DataContext'
99import { send } from './utils/vscode'
1010
1111interface ReceivedEvent {
1212 data : CR . Action
1313}
1414
1515const App = ( ) => {
16+ const initialState = { SelectTutorial : 'Initial ' }
17+
18+ // set state machine state
1619 const [ state , setState ] = React . useState ( initialState )
17- const [ data , setData ] : [ CR . MachineContext , ( data : CR . MachineContext ) => void ] = React . useState ( initialData )
20+
21+ // update level/stage/step status based on user progress & position
22+ // TODO: model server more effeciently
23+ const [ setStatus ] = useMutation ( SET_STATUS )
1824
1925 // update state based on response from editor
2026 const handleEvent = ( event : ReceivedEvent ) : void => {
2127 const message = event . data
2228 // messages from core
29+ const { progress, position } = message . payload . data
30+
2331 if ( message . type === 'SET_STATE' ) {
32+ // SET_STATE - set state machine state
2433 setState ( message . payload . state )
25- setData ( message . payload . data )
34+
35+ setStatus ( { variables : { progress, position } } )
2636 } else if ( message . type === 'SET_DATA' ) {
27- setData ( message . payload . data )
37+ // SET_DATA - set state machine context
38+ setStatus ( { variables : { progress, position } } )
2839 }
2940 }
3041
@@ -44,20 +55,15 @@ const App = () => {
4455
4556 const value = {
4657 state,
47- position : data . position ,
48- data : data . data ,
49- progress : data . progress ,
5058 }
5159
5260 // TODO: refactor cond to user <Router><Route> and accept first route as if/else if
5361 return (
5462 < ApolloProvider client = { client } >
55- < DataContext . Provider value = { value } >
56- < div >
57- { process . env . REACT_APP_DEBUG && < Debugger value = { value } /> }
58- < Routes state = { state } />
59- </ div >
60- </ DataContext . Provider >
63+ < div >
64+ { process . env . REACT_APP_DEBUG && < Debugger value = { value } /> }
65+ < Routes state = { state } />
66+ </ div >
6167 </ ApolloProvider >
6268 )
6369}
0 commit comments