fix(client): return an empty string for empty sections
This commit is contained in:
@ -9,17 +9,11 @@ const propTypes = {
|
||||
section: PropTypes.string
|
||||
};
|
||||
|
||||
function emptyInstruction(instructions) {
|
||||
return /^<section\s+id\s*=\s*("|')instructions\1\s*>\s*<\/section>$/.test(
|
||||
instructions
|
||||
);
|
||||
}
|
||||
|
||||
function ChallengeDescription({ description, instructions, section }) {
|
||||
return (
|
||||
<div className={`challenge-instructions ${section}`}>
|
||||
<div dangerouslySetInnerHTML={{ __html: description }} />
|
||||
{!emptyInstruction(instructions) && (
|
||||
{instructions && (
|
||||
<Fragment>
|
||||
<hr />
|
||||
<div dangerouslySetInnerHTML={{ __html: instructions }} />
|
||||
|
@ -1,6 +1,8 @@
|
||||
const Joi = require('joi');
|
||||
Joi.objectId = require('joi-objectid')(Joi);
|
||||
|
||||
const { challengeTypes } = require('../../client/utils/challengeTypes');
|
||||
|
||||
function getSchemaForLang(lang) {
|
||||
let schema = Joi.object().keys({
|
||||
block: Joi.string(),
|
||||
@ -12,7 +14,11 @@ function getSchemaForLang(lang) {
|
||||
.required(),
|
||||
checksum: Joi.number(),
|
||||
dashedName: Joi.string(),
|
||||
description: Joi.string().required(),
|
||||
description: Joi.when('challengeType', {
|
||||
is: challengeTypes.step,
|
||||
then: Joi.string().allow(''),
|
||||
otherwise: Joi.string().required()
|
||||
}),
|
||||
fileName: Joi.string(),
|
||||
files: Joi.array().items(
|
||||
Joi.object().keys({
|
||||
@ -37,7 +43,7 @@ function getSchemaForLang(lang) {
|
||||
videoUrl: Joi.string().allow(''),
|
||||
helpRoom: Joi.string(),
|
||||
id: Joi.objectId().required(),
|
||||
instructions: Joi.string().required(),
|
||||
instructions: Joi.string().allow(''),
|
||||
isBeta: Joi.bool(),
|
||||
isComingSoon: Joi.bool(),
|
||||
isLocked: Joi.bool(),
|
||||
|
@ -62,7 +62,12 @@ function textToData(sectionIds) {
|
||||
}
|
||||
}
|
||||
});
|
||||
const textArray = toHTML({ ...node, children: newChildren });
|
||||
const hasData = newChildren.some(
|
||||
node => node.type !== 'text' || !/^\s*$/.test(node.value)
|
||||
);
|
||||
const textArray = hasData
|
||||
? toHTML({ ...node, children: newChildren })
|
||||
: '';
|
||||
file.data = {
|
||||
...file.data,
|
||||
[sectionId]: textArray
|
||||
|
Reference in New Issue
Block a user