add/ delete tutorials/steps in initial state of redux based on tutorials.json
This commit is contained in:
parent
f997bb661f
commit
6f77b460cb
@ -2,10 +2,47 @@ import { TUTORIAL_SUCCESS, TUTORIAL_ERROR, TUTORIAL_CHANGE, TUTORIAL_XML, TUTORI
|
|||||||
|
|
||||||
import tutorials from '../components/Tutorial/tutorials.json';
|
import tutorials from '../components/Tutorial/tutorials.json';
|
||||||
|
|
||||||
|
const initialStatus = () => {
|
||||||
|
if(window.localStorage.getItem('status')){
|
||||||
|
var status = JSON.parse(window.localStorage.getItem('status'));
|
||||||
|
var existingTutorialIds = [];
|
||||||
|
for(var i = 0; i < tutorials.length; i++){
|
||||||
|
var tutorialsId = tutorials[i].id
|
||||||
|
existingTutorialIds.push(tutorialsId);
|
||||||
|
if(status.findIndex(status => status.id === tutorialsId) > -1){
|
||||||
|
var tasks = tutorials[i].steps.filter(step => step.type === 'task');
|
||||||
|
var existingTaskIds = [];
|
||||||
|
for(var j = 0; j < tasks.length; j++){
|
||||||
|
var tasksId = tasks[j].id;
|
||||||
|
existingTaskIds.push(tasksId);
|
||||||
|
if(status[i].tasks.findIndex(task => task.id === tasksId) === -1){
|
||||||
|
// task does not exist
|
||||||
|
status[i].tasks.push({id: tasksId});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// deleting old tasks which do not longer exist
|
||||||
|
if(existingTaskIds.length > 0){
|
||||||
|
status[i].tasks = status[i].tasks.filter(task => existingTaskIds.indexOf(task.id) > -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
status.push({id: tutorialsId, tasks: new Array(tutorials[i].steps.filter(step => step.type === 'task').length).fill({})});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// deleting old tutorials which do not longer exist
|
||||||
|
if(existingTutorialIds.length > 0){
|
||||||
|
status = status.filter(status => existingTutorialIds.indexOf(status.id) > -1);
|
||||||
|
}
|
||||||
|
console.log('tutorial', existingTutorialIds);
|
||||||
|
console.log('tutorial', status);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
// window.localStorage.getItem('status') does not exist
|
||||||
|
return tutorials.map(tutorial => {return {id: tutorial.id, tasks: tutorial.steps.filter(step => step.type === 'task').map(task => {return {id: task.id};})};});
|
||||||
|
};
|
||||||
|
|
||||||
const initialState = {
|
const initialState = {
|
||||||
status: window.localStorage.getItem('status') ?
|
status: initialStatus(),
|
||||||
JSON.parse(window.localStorage.getItem('status'))
|
|
||||||
: tutorials.map(tutorial => {return {id: tutorial.id, tasks: new Array(tutorial.steps.filter(step => step.type === 'task').length).fill({}) };}),
|
|
||||||
currentId: null,
|
currentId: null,
|
||||||
activeStep: 0,
|
activeStep: 0,
|
||||||
change: 0
|
change: 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user