From 0d3140d8a0d4bba68a920984e78adb542a0dfd8c Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 28 Sep 2023 15:47:28 +0300
Subject: [PATCH] display lists

---
 editors/demo/src/Editoria/config/config.js    |  2 +-
 .../src/AiService/ReplaceSelectedText.js      | 21 ++++++++++++-------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js
index 3c828db6d..8b8c5846f 100644
--- a/editors/demo/src/Editoria/config/config.js
+++ b/editors/demo/src/Editoria/config/config.js
@@ -106,7 +106,7 @@ async function DummyPromise(userInput) {
       if (userInput === 'reject') {
         reject('Your request could not be processed for now');
       } else {
-        resolve(text);
+        resolve('text');
       }
     }, 150);
   });
diff --git a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
index 25b8c000f..e4a55dba4 100644
--- a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
+++ b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
@@ -7,7 +7,7 @@ const elementFromString = string => {
   return new window.DOMParser().parseFromString(wrappedValue, 'text/html').body;
 };
 
-const replaceSelectedText = (view, transformedText, replace = false) => {
+const replaceSelectedText = (view, responseText, replace = false) => {
   let { state } = view;
   let { tr } = state;
   const { from, to } = tr.selection;
@@ -18,8 +18,17 @@ const replaceSelectedText = (view, transformedText, replace = false) => {
     return;
   }
 
-  if (transformedText.includes('\n\n')) {
-    transformedText.split('\n\n').forEach(element => {
+  let transformedText = state.schema.text(responseText);
+
+  if (responseText.includes('<ul>') || responseText.includes('ol')) {
+    transformedText = parser.parse(
+      elementFromString(responseText.replace(/^\s+|\s+$/g, '')),
+      {},
+    );
+  }
+
+  if (responseText.includes('\n\n')) {
+    responseText.split('\n\n').forEach(element => {
       paragraphNodes.push(
         parser.parse(elementFromString(element.replace(/\n/g, '<br />')), {
           preserveWhitespace: true,
@@ -29,9 +38,7 @@ const replaceSelectedText = (view, transformedText, replace = false) => {
   }
 
   const finalReplacementText =
-    paragraphNodes.length !== 0
-      ? paragraphNodes
-      : state.schema.text(transformedText);
+    paragraphNodes.length !== 0 ? paragraphNodes : transformedText;
 
   if (replace) {
     if (from !== to) {
@@ -49,7 +56,7 @@ const replaceSelectedText = (view, transformedText, replace = false) => {
 
   // Update the selection to the end of the new text
   const newFrom = replace ? from : to;
-  const newTo = newFrom + transformedText.length;
+  const newTo = newFrom + responseText.length;
   const cursorPosition = paragraphNodes.length !== 0 ? newTo + 2 : newTo;
   const newSelection = TextSelection.create(
     state.doc,
-- 
GitLab