@@ -5,15 +5,17 @@ import {
55import { create , build } from 'coderoad-cli' ;
66import { readFileSync } from 'fs' ;
77import { join } from 'path' ;
8- // import taskUpdate from './utils/taskUpdate';
9- import pageNew from './utils/pageNew' ;
8+ import taskUpdate from './utils/taskUpdate' ;
9+ import pageGet from './utils/pageGet' ;
10+ import taskGet from './utils/taskGet' ;
11+ import * as merge from 'lodash.merge' ;
1012
1113const _tutorial : CR . Tutorial = {
1214 info : {
1315 title : '' ,
1416 description : '' ,
1517 } ,
16- pages : [ ] . concat ( pageNew ( 0 ) )
18+ pages : [ ] . concat ( pageGet ( 0 ) )
1719} ;
1820
1921export default function tutorial ( t = _tutorial , action : Action ) : CR . Tutorial {
@@ -44,12 +46,31 @@ export default function tutorial(t = _tutorial, action: Action): CR.Tutorial {
4446
4547 case TUTORIAL_PAGE_ADD :
4648 // add a new page template
47- const pages = t . pages . concat ( pageNew ( t . pages . length ) ) ;
49+ const pages = t . pages . concat ( pageGet ( t . pages . length ) ) ;
4850 return Object . assign ( { } , t , { pages} ) ;
4951
50- // case TUTORIAL_ADD_HINT:
51- // const {pagePosition, taskPosition} = action.payload;
52- // t.pages[pagePosition].tasks[taskPosition].hints.concat('')
52+ case TUTORIAL_TASK_ADD :
53+ const { pagePosition} = action . payload ;
54+ // add task
55+ const tasks = t . pages [ pagePosition ] . tasks ;
56+ tasks . push ( taskGet ( pagePosition , tasks . length ) ) ;
57+ // TODO: remove mutation, use merge
58+ // update page tasks
59+ const updatedPage = Object . assign ( { } , t . pages [ pagePosition ] , { tasks} ) ;
60+ t . pages [ pagePosition ] = updatedPage ;
61+ // update pages
62+ return Object . assign ( { } , t ) ;
63+
64+ case TUTORIAL_ACTION_ADD :
65+ const { pagePosition, taskPosition, tutorialAction} = action . payload ;
66+ const tut = taskUpdate ( t , pagePosition , taskPosition , 'actions' , tutorialAction ) ;
67+ return tut ;
68+
69+ case TUTORIAL_HINT_ADD :
70+ const { pagePosition, taskPosition} = action . payload ;
71+ const tut = taskUpdate ( t , pagePosition , taskPosition , 'hints' , '' ) ;
72+ return tut ;
73+
5374
5475 default :
5576 return t ;
0 commit comments