From 1fd76927fb3ef065c3aa1af9705bd11e713d3485 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Fri, 3 Dec 2021 11:19:12 +0200
Subject: [PATCH] handleChange

---
 .../components/SwitchComponent.js             | 40 ++++++++++---------
 ...ultipleChoiceSingleCorrectContainerNode.js |  4 +-
 2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
index 7507b8b46..5b8de36a4 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 8f6db3202..ab224fb26 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: '' },
   },
-- 
GitLab