fix: feedback clearing on type change (#334)

This commit is contained in:
Kristin Aoki
2023-05-22 09:57:22 -04:00
committed by GitHub
parent 9239d2b8b1
commit e0c0c918d0
2 changed files with 36 additions and 11 deletions

View File

@@ -221,34 +221,59 @@ export const typeRowHooks = ({
}) => { }) => {
const clearPreviouslySelectedAnswers = () => { const clearPreviouslySelectedAnswers = () => {
let currentAnswerTitles; let currentAnswerTitles;
const { selectedFeedback, unselectedFeedback, ...editorContent } = fetchEditorContent({ format: 'text' });
if (RichTextProblems.includes(problemType)) { if (RichTextProblems.includes(problemType)) {
currentAnswerTitles = fetchEditorContent({ format: 'text' }).answers; currentAnswerTitles = editorContent.answers;
} }
answers.forEach(answer => { answers.forEach(answer => {
const title = currentAnswerTitles?.[answer.id] || answer.title; const title = currentAnswerTitles?.[answer.id] || answer.title;
if (answer.correct) { if (answer.correct) {
updateAnswer({ ...answer, title, correct: false }); updateAnswer({
...answer,
title,
selectedFeedback,
unselectedFeedback,
correct: false,
});
} else { } else {
updateAnswer({ ...answer, title }); updateAnswer({
...answer,
selectedFeedback,
unselectedFeedback,
title,
});
} }
}); });
}; };
const updateAnswersToCorrect = () => { const updateAnswersToCorrect = () => {
let currentAnswerTitles; let currentAnswerTitles;
const { selectedFeedback, unselectedFeedback, ...editorContent } = fetchEditorContent({ format: 'text' });
if (RichTextProblems.includes(problemType)) { if (RichTextProblems.includes(problemType)) {
currentAnswerTitles = fetchEditorContent({ format: 'text' }).answers; currentAnswerTitles = editorContent.answers;
} }
answers.forEach(answer => { answers.forEach(answer => {
const title = currentAnswerTitles ? currentAnswerTitles[answer.id] : answer.title; const title = currentAnswerTitles ? currentAnswerTitles[answer.id] : answer.title;
updateAnswer({ ...answer, title, correct: true }); updateAnswer({
...answer,
title,
selectedFeedback,
unselectedFeedback,
correct: true,
});
}); });
}; };
const convertToPlainText = () => { const convertToPlainText = () => {
const currentAnswerTitles = fetchEditorContent({ format: 'text' }).answers; const { selectedFeedback, unselectedFeedback, ...editorContent } = fetchEditorContent({ format: 'text' });
const currentAnswerTitles = editorContent.answers;
answers.forEach(answer => { answers.forEach(answer => {
updateAnswer({ ...answer, title: currentAnswerTitles[answer.id] }); updateAnswer({
...answer,
selectedFeedback,
unselectedFeedback,
title: currentAnswerTitles[answer.id],
});
}); });
}; };

View File

@@ -32,17 +32,17 @@ export const fetchEditorContent = ({ format }) => {
const { selectedFeedback, unselectedFeedback, groupFeedback } = editorObject; const { selectedFeedback, unselectedFeedback, groupFeedback } = editorObject;
const feedbackId = id.substring(id.indexOf('-') + 1); const feedbackId = id.substring(id.indexOf('-') + 1);
if (id.startsWith('selected')) { if (id.startsWith('selected')) {
editorObject.selectedFeedback = { ...selectedFeedback, [feedbackId]: editor.getContent({ format }) }; editorObject.selectedFeedback = { ...selectedFeedback, [feedbackId]: editor.getContent() };
} }
if (id.startsWith('unselected')) { if (id.startsWith('unselected')) {
editorObject.unselectedFeedback = { ...unselectedFeedback, [feedbackId]: editor.getContent({ format }) }; editorObject.unselectedFeedback = { ...unselectedFeedback, [feedbackId]: editor.getContent() };
} }
if (id.startsWith('group')) { if (id.startsWith('group')) {
editorObject.groupFeedback = { ...groupFeedback, [feedbackId]: editor.getContent({ format }) }; editorObject.groupFeedback = { ...groupFeedback, [feedbackId]: editor.getContent() };
} }
} else if (id.startsWith('hint')) { } else if (id.startsWith('hint')) {
const { hints } = editorObject; const { hints } = editorObject;
hints.push(editor.getContent({ format })); hints.push(editor.getContent());
} else { } else {
editorObject[id] = editor.getContent(); editorObject[id] = editor.getContent();
} }