Files
freeCodeCamp/common/app/routes/challenges/redux/selectors.js

38 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-06-03 14:12:56 -07:00
import * as challengeTypes from '../../../utils/challengeTypes';
2016-05-10 13:17:57 -07:00
import { createSelector } from 'reselect';
2016-06-03 14:12:56 -07:00
const viewTypes = {
[ challengeTypes.HTML ]: 'classic',
[ challengeTypes.JS ]: 'classic',
[ challengeTypes.BONFIRE ]: 'classic',
[ challengeTypes.ZIPLINE ]: 'project',
[ challengeTypes.BASEJUMP ]: 'project',
// might not be used anymore
[ challengeTypes.OLDVIDEO ]: 'video',
// formally hikes
[ challengeTypes.VIDEO ]: 'video',
[ challengeTypes.STEP ]: 'step'
};
2016-05-10 13:17:57 -07:00
export const challengeSelector = createSelector(
state => state.challengesApp.challenge,
state => state.entities.challenge,
(challengeName, challengeMap) => {
if (!challengeName || !challengeMap) {
return {};
}
const challenge = challengeMap[challengeName];
return {
challenge: challenge,
2016-06-03 14:12:56 -07:00
viewType: viewTypes[challenge.challengeType] || 'classic',
showPreview: challenge &&
challenge.challengeType === challengeTypes.HTML,
mode: challenge && challenge.challengeType === challengeTypes.HTML ?
2016-05-10 13:17:57 -07:00
'text/html' :
'javascript'
};
}
);