diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js index 7507b8b460cfd0d40b08e8354e1104b46a93b733..5b8de36a4987361efefd43c87f3ddcbdc58259b0 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js @@ -33,29 +33,31 @@ const CustomSwitch = ({ node, getPos }) => { const handleChange = () => { setChecked(!checked); - - main.state.doc.descendants((editorNode, pos) => { - if (editorNode.type.name === 'multiple_choice_single_correct_container') { - editorNode.content.content.forEach(element => { - if (element.attrs.id === node.attrs.id) { - main.dispatch( - main.state.tr.setNodeMarkup(getPos(), undefined, { - ...element.attrs, - correct: !checked, - }), - ); - } else if (element.attrs.correct) { - // console.log(element); - // main.dispatch( - // main.state.tr.setNodeMarkup(getPos() + 4, undefined, { - // ...element.attrs, - // correct: false, - // }), - // ); + const { tr } = main.state; + main.state.doc.descendants((parentNode, parentPos) => { + if (parentNode.type.name === 'multiple_choice_single_correct_container') { + parentNode.descendants((element, position) => { + if ( + element.type.name === 'multiple_choice_single_correct' && + element.attrs.id === node.attrs.id + ) { + tr.setNodeMarkup(getPos(), undefined, { + ...element.attrs, + correct: !checked, + }); + } else if ( + element.type.name === 'multiple_choice_single_correct' && + element.attrs.correct + ) { + tr.setNodeMarkup(parentPos + position + 1, undefined, { + ...element.attrs, + correct: false, + }); } }); } }); + main.dispatch(tr); }; return ( diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js index 8f6db320254edff86987dfc4864456155f40f838..ab224fb26658ad80c4733265b4fff7e0105643f1 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js @@ -1,6 +1,8 @@ +import { v4 as uuidv4 } from 'uuid'; + const multipleChoiceSingleCorrectContainerNode = { attrs: { - id: { default: '' }, + id: { default: uuidv4() }, class: { default: 'multiple-choice-single-correct' }, correctId: { default: '' }, },