@coorpacademy/progression-engine
Version:
92 lines (76 loc) • 2.7 kB
JavaScript
;
exports.__esModule = true;
exports.computeNextStepOnRefuseExtraLife = exports.computeNextStepOnAcceptExtraLife = exports.computeNextStepAfterAnswer = exports.computeInitialStep = undefined;
var _checkAnswer = require('../check-answer');
var _checkAnswer2 = _interopRequireDefault(_checkAnswer);
var _computeNextStep = require('./compute-next-step');
var _computeNextStep2 = _interopRequireDefault(_computeNextStep);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const computeInitialStep = exports.computeInitialStep = (config, availableContent) => {
const initialStep = (0, _computeNextStep2.default)(config, null, availableContent, null);
if (!initialStep) {
return null;
}
const { nextContent, instructions } = initialStep;
return {
type: 'move',
payload: {
instructions,
nextContent
}
};
};
const computeNextStepAfterAnswer = exports.computeNextStepAfterAnswer = (config, state, availableContent, currentSlide, action) => {
const answerIsCorrect = action.payload.godMode || (0, _checkAnswer2.default)(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 = (0, _computeNextStep2.default)(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
}
};
};
const computeNextStepOnAcceptExtraLife = exports.computeNextStepOnAcceptExtraLife = (config, state, availableContent) => {
const partialAction = { type: 'extraLifeAccepted' };
const stepResult = (0, _computeNextStep2.default)(config, state, availableContent, partialAction);
if (!stepResult) {
return null;
}
const { nextContent, instructions } = stepResult;
return {
type: 'extraLifeAccepted',
payload: {
content: { ref: 'extraLife', type: 'node' },
nextContent,
instructions
}
};
};
const computeNextStepOnRefuseExtraLife = exports.computeNextStepOnRefuseExtraLife = (config, state) => {
return {
type: 'extraLifeRefused',
payload: {
content: { ref: 'extraLife', type: 'node' },
nextContent: { ref: 'failExitNode', type: 'failure' }
}
};
};
//# sourceMappingURL=index.js.map