@coorpacademy/progression-engine
Version:
83 lines (70 loc) • 2.08 kB
JavaScript
import checkAnswer from '../check-answer';
import computeNextStep from './compute-next-step';
export const computeInitialStep = (config, availableContent) => {
const initialStep = computeNextStep(config, null, availableContent, null);
if (!initialStep) {
return null;
}
const { nextContent, instructions } = initialStep;
return {
type: 'move',
payload: {
instructions,
nextContent
}
};
};
export const computeNextStepAfterAnswer = (config, state, availableContent, currentSlide, action) => {
const answerIsCorrect = action.payload.godMode || checkAnswer(config, currentSlide.question, action.payload.answer);
const actionWithIsCorrect = {
type: 'answer',
payload: {
answer: action.payload.answer,
content: action.payload.content,
godMode: action.payload.godMode,
isCorrect: answerIsCorrect
}
};
const stepResult = computeNextStep(config, state, availableContent, actionWithIsCorrect);
if (!stepResult) {
return null;
}
const { nextContent, instructions, isCorrect } = stepResult;
return {
type: 'answer',
payload: {
answer: action.payload.answer,
content: action.payload.content,
godMode: action.payload.godMode,
nextContent,
isCorrect,
instructions
}
};
};
export const computeNextStepOnAcceptExtraLife = (config, state, availableContent) => {
const partialAction = { type: 'extraLifeAccepted' };
const stepResult = computeNextStep(config, state, availableContent, partialAction);
if (!stepResult) {
return null;
}
const { nextContent, instructions } = stepResult;
return {
type: 'extraLifeAccepted',
payload: {
content: { ref: 'extraLife', type: 'node' },
nextContent,
instructions
}
};
};
export const computeNextStepOnRefuseExtraLife = (config, state) => {
return {
type: 'extraLifeRefused',
payload: {
content: { ref: 'extraLife', type: 'node' },
nextContent: { ref: 'failExitNode', type: 'failure' }
}
};
};
//# sourceMappingURL=index.js.map