fix: feedback clearing on type change (#334)
This commit is contained in:
@@ -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],
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user