feat: hide isHidden challenges

This commit is contained in:
Oliver Eyton-Williams
2020-05-20 15:45:34 +02:00
committed by Mrugesh Mohapatra
parent d865e2cb0e
commit 68aef571ee
8 changed files with 15 additions and 8 deletions

View File

@ -78,6 +78,7 @@ exports.createPages = function createPages({ graphql, actions, reporter }) {
node {
block
challengeType
isHidden
fields {
slug
}

View File

@ -60,9 +60,12 @@ export class SuperBlock extends Component {
const blocksForSuperBlock = nodes.filter(
node => node.superBlock === superBlock
);
// since the nodes have been filtered based on isHidden, any blocks whose
// nodes have been entirely removed will not appear in this array.
const blockDashedNames = uniq(
blocksForSuperBlock.map(({ block }) => block)
);
// render all non-empty blocks
return (
<ul>
{blockDashedNames.map(blockDashedName => (

View File

@ -111,6 +111,8 @@ export class Map extends Component {
render() {
const { nodes } = this.props;
// if a given superBlock's nodes have been filtered (via isHidden, say) that
// superBlock will not appear in superBlocks and will not be rendered.
const superBlocks = uniq(nodes.map(({ superBlock }) => superBlock));
return (
<Row>

View File

@ -101,7 +101,7 @@ export const LearnPage = ({
isSignedIn={isSignedIn}
nodes={edges
.map(({ node }) => node)
.filter(({ isPrivate }) => !isPrivate)}
.filter(({ isPrivate, isHidden }) => !isPrivate && !isHidden)}
/>
</Grid>
</LearnLayout>
@ -136,6 +136,7 @@ export const query = graphql`
isRequired
superBlock
dashedName
isHidden
}
}
}

View File

@ -36,7 +36,7 @@ export const ChallengeNode = PropTypes.shape({
guideUrl: PropTypes.string,
head: PropTypes.arrayOf(PropTypes.string),
instructions: PropTypes.string,
isBeta: PropTypes.bool,
isHidden: PropTypes.bool,
isComingSoon: PropTypes.bool,
isLocked: PropTypes.bool,
isPrivate: PropTypes.bool,

View File

@ -67,9 +67,12 @@ exports.createChallengePages = createPage => ({ node }, index, thisArray) => {
required = [],
template,
challengeType,
id
id,
isHidden
} = node;
if (challengeType === 7) {
// TODO: challengeType === 7 and isPrivate are the same, right? If so, we
// should remove one of them.
if (challengeType === 7 || isHidden) {
return null;
}

View File

@ -127,9 +127,6 @@ async function createChallenge(fullPath, maybeMeta) {
challenge.required = required.concat(challenge.required || []);
challenge.template = template;
challenge.time = time;
// isBeta should default to true, so if it is missing, set it to be true
// eslint-disable-next-line no-undefined
challenge.isBeta = challenge.isBeta === undefined ? true : challenge.isBeta;
return challenge;
}

View File

@ -45,7 +45,7 @@ function getSchemaForLang(lang) {
helpRoom: Joi.string(),
id: Joi.objectId().required(),
instructions: Joi.string().allow(''),
isBeta: Joi.bool(),
isHidden: Joi.bool().required(),
isComingSoon: Joi.bool(),
isLocked: Joi.bool(),
isPrivate: Joi.bool(),