Skip to content

Commit

Permalink
Fix rendering of the error messages
Browse files Browse the repository at this point in the history
Signed-off-by: Anil Vishnoi <[email protected]>
  • Loading branch information
vishnoianil committed Sep 26, 2024
1 parent 27c0e3a commit b61eb68
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 42 deletions.
2 changes: 1 addition & 1 deletion src/components/Contribute/Knowledge/Update/Update.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ Creator names: ${attributionData.creator_names}
};
return (
<Button variant="primary" type="submit" isDisabled={disableAction} onClick={handleUpdate}>
Update Knowledge
Update
</Button>
);
};
Expand Down
80 changes: 40 additions & 40 deletions src/components/Contribute/Knowledge/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -220,65 +220,51 @@ export const KnowledgeForm: React.FunctionComponent<KnowledgeFormProps> = ({ kno
}
}, [knowledgeEditFormData]);

const validateContext = (seedExample: SeedExample): SeedExample => {
const validateContext = (context: string) => {
// Split the context into words based on spaces
const contextStr = seedExample.context.trim();
const contextStr = context.trim();
if (contextStr.length == 0) {
setDisableAction(true);
seedExample.validationError = 'Context is required';
seedExample.isContextValid = ValidatedOptions.error;
return seedExample;
return { errorMsg: 'Context is required', context: ValidatedOptions.error };
}
const tokens = contextStr.split(/\s+/);
if (tokens.length > 0 && tokens.length <= 500) {
setDisableAction(!checkKnowledgeFormCompletion(knowledgeFormData));
seedExample.isContextValid = ValidatedOptions.success;
return seedExample;
return { errorMsg: '', context: ValidatedOptions.success };
}
setDisableAction(true);
seedExample.validationError = 'Context must be less than 500 words. Current word count: ' + tokens.length;
seedExample.isContextValid = ValidatedOptions.error;
return seedExample;
const errorMsg = 'Context must be less than 500 words. Current word count: ' + tokens.length;
return { errorMsg: errorMsg, context: ValidatedOptions.error };
};

const validateQuestion = (qnaPair: QuestionAndAnswerPair): QuestionAndAnswerPair => {
const questionStr = qnaPair.question.trim();
const validateQuestion = (question: string) => {
const questionStr = question.trim();
if (questionStr.length == 0) {
setDisableAction(true);
qnaPair.questionValidationError = 'Question is required';
qnaPair.isQuestionValid = ValidatedOptions.error;
return qnaPair;
return { errorMsg: 'Question is required', context: ValidatedOptions.error };
}
const tokens = questionStr.split(/\s+/);
if (tokens.length > 0 && tokens.length < 250) {
setDisableAction(!checkKnowledgeFormCompletion(knowledgeFormData));
qnaPair.isQuestionValid = ValidatedOptions.success;
return qnaPair;
return { errorMsg: '', context: ValidatedOptions.success };
}
setDisableAction(true);
qnaPair.questionValidationError = 'Question must be less than 250 words. Current word count: ' + tokens.length;
qnaPair.isQuestionValid = ValidatedOptions.error;
return qnaPair;
return { errorMsg: 'Question must be less than 250 words. Current word count: ' + tokens.length, context: ValidatedOptions.error };
};

const validateAnswer = (qnaPair: QuestionAndAnswerPair): QuestionAndAnswerPair => {
const answerStr = qnaPair.answer.trim();
const validateAnswer = (answer: string) => {
const answerStr = answer.trim();
if (answerStr.length == 0) {
setDisableAction(true);
qnaPair.answerValidationError = 'Answer is required';
qnaPair.isAnswerValid = ValidatedOptions.error;
return qnaPair;
return { errorMsg: 'Answer is required', context: ValidatedOptions.error };
}
const tokens = answerStr.split(/\s+/);
if (tokens.length > 0 && tokens.length < 250) {
setDisableAction(!checkKnowledgeFormCompletion(knowledgeFormData));
qnaPair.isAnswerValid = ValidatedOptions.success;
return qnaPair;
return { errorMsg: '', context: ValidatedOptions.success };
}
setDisableAction(true);
qnaPair.answerValidationError = 'Answer must be less than 250 words. Current word count: ' + tokens.length;
qnaPair.isAnswerValid = ValidatedOptions.error;
return qnaPair;
return { errorMsg: 'Answer must be less than 250 words. Current word count: ' + tokens.length, context: ValidatedOptions.error };
};

const handleContextInputChange = (seedExampleIndex: number, contextValue: string): void => {
Expand All @@ -295,14 +281,18 @@ export const KnowledgeForm: React.FunctionComponent<KnowledgeFormProps> = ({ kno
};

const handleContextBlur = (seedExampleIndex: number): void => {
setSeedExamples(
seedExamples.map((seedExample: SeedExample, index: number) => {
if (index === seedExampleIndex) {
return validateContext(seedExample);
}
return seedExample;
})
);
const updatedSeedExamples = seedExamples.map((seedExample: SeedExample, index: number): SeedExample => {
if (index === seedExampleIndex) {
const { errorMsg, context } = validateContext(seedExample.context);
return {
...seedExample,
isContextValid: context,
validationError: errorMsg
};
}
return seedExample;
});
setSeedExamples(updatedSeedExamples);
};

const handleQuestionInputChange = (seedExampleIndex: number, questionAndAnswerIndex: number, questionValue: string): void => {
Expand Down Expand Up @@ -333,7 +323,12 @@ export const KnowledgeForm: React.FunctionComponent<KnowledgeFormProps> = ({ kno
...seedExample,
questionAndAnswers: seedExample.questionAndAnswers.map((questionAndAnswerPair: QuestionAndAnswerPair, index: number) => {
if (index === questionAndAnswerIndex) {
return validateQuestion(questionAndAnswerPair);
const { errorMsg, context } = validateQuestion(questionAndAnswerPair.question);
return {
...questionAndAnswerPair,
isQuestionValid: context,
questionValidationError: errorMsg
};
}
return questionAndAnswerPair;
})
Expand Down Expand Up @@ -371,7 +366,12 @@ export const KnowledgeForm: React.FunctionComponent<KnowledgeFormProps> = ({ kno
...seedExample,
questionAndAnswers: seedExample.questionAndAnswers.map((questionAndAnswerPair: QuestionAndAnswerPair, index: number) => {
if (index === questionAndAnswerIndex) {
return validateAnswer(questionAndAnswerPair);
const { errorMsg, context } = validateAnswer(questionAndAnswerPair.answer);
return {
...questionAndAnswerPair,
isAnswerValid: context,
answerValidationError: errorMsg
};
}
return questionAndAnswerPair;
})
Expand Down
2 changes: 1 addition & 1 deletion src/components/Contribute/Skill/Update/Update.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ Creator names: ${attributionData.creator_names}
};
return (
<Button variant="primary" type="submit" isDisabled={disableAction} onClick={handleUpdate}>
Update Skill
Update
</Button>
);
};
Expand Down

0 comments on commit b61eb68

Please sign in to comment.