From 6315e97518478778f903fa0def81ed187ec0d7df Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 25 Jun 2020 18:41:32 +0300 Subject: [PATCH] save conversation on mark --- editors/editoria/src/Editoria.js | 2 +- .../src/components/comments/CommentBox.js | 18 +++++++++++++++++- .../src/components/link/LinkComponent.js | 1 + .../src/components/rightArea/RightArea.js | 1 + .../src/marks/commentMark.js | 2 +- .../src/document/DocumentHelpers.js | 7 ++++++- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index f94f3052f..e2cd4aede 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -47,7 +47,7 @@ const Editoria = () => ( autoFocus placeholder="Type Something..." fileUpload={file => renderImage(file)} - value={`<p class="paragraph">This is the first paragraph</p><p class="paragraph">This is the second paragraph</p><p class="author">This is an author</p>`} + value={`<p class="paragraph">This is the first paragraph</p><p class="paragraph">This is the <span class="comment" data-id="ff7552b8-956c-4822-99b5-826715751c45" data-conversation="[{"demo":"dsdadsa"}]" data-group="main">second</span> paragraph</p><p class="author">This is an author</p>`} // value={`<p class="paragraph"><span class="comment" data-id="834ba3c5-1fcf-4a42-8e2f-1f975f229716" data-conversation="[]" data-group="main">and a </span><span class="insertion" data-id="" data-user="1234" data-username="demo" data-date="26541557" data-group=""><span class="comment" data-id="834ba3c5-1fcf-4a42-8e2f-1f975f229716" data-conversation="[]" data-group="main">sdasdssd</span></span><span class="comment" data-id="834ba3c5-1fcf-4a42-8e2f-1f975f229716" data-conversation="[]" data-group="main">paragraph</span></p><p class="paragraph">more</p>`} layout={EditoriaLayout} TrackChange diff --git a/wax-prosemirror-components/src/components/comments/CommentBox.js b/wax-prosemirror-components/src/components/comments/CommentBox.js index 38f74a170..e17cc7489 100644 --- a/wax-prosemirror-components/src/components/comments/CommentBox.js +++ b/wax-prosemirror-components/src/components/comments/CommentBox.js @@ -37,6 +37,7 @@ export default ({ comment, view, top, dataBox }) => { const { view: { main: { props: { user } } }, app, activeView } = useContext( WaxContext ), + { state, dispatch } = activeView, commentInput = useRef(null), [animate, setAnimate] = useState(false), [commentAnnotation, setCommentAnnotation] = useState(comment), @@ -59,7 +60,22 @@ export default ({ comment, view, top, dataBox }) => { const saveComment = () => { const { current: { value } } = commentInput; - console.log(commentAnnotation, currentUser, value); + const { tr, doc } = state; + const commentMark = state.schema.marks.comment; + + const obj = { [user.username]: value }; + commentAnnotation.attrs.conversation.push(obj); + + dispatch( + tr.addMark( + commentAnnotation.pos, + commentAnnotation.pos + commentAnnotation.node.nodeSize, + commentMark.create({ + ...((commentAnnotation && commentAnnotation.attrs) || {}), + conversation: commentAnnotation.attrs.conversation + }) + ) + ); }; return ( diff --git a/wax-prosemirror-components/src/components/link/LinkComponent.js b/wax-prosemirror-components/src/components/link/LinkComponent.js index c44c989fe..a7ac13a3b 100644 --- a/wax-prosemirror-components/src/components/link/LinkComponent.js +++ b/wax-prosemirror-components/src/components/link/LinkComponent.js @@ -19,6 +19,7 @@ const Button = styled.button` `; const LinkComponent = ({ mark, setPosition, position }) => { + console.log(mark); const href = mark ? mark.attrs.href : null, linkMark = mark ? mark : null, { view: { main }, activeView } = useContext(WaxContext), diff --git a/wax-prosemirror-components/src/components/rightArea/RightArea.js b/wax-prosemirror-components/src/components/rightArea/RightArea.js index fe0fc66e1..4eae5f947 100644 --- a/wax-prosemirror-components/src/components/rightArea/RightArea.js +++ b/wax-prosemirror-components/src/components/rightArea/RightArea.js @@ -156,6 +156,7 @@ const updateMarks = view => { mark.type.name === "format_change" ) { mark.pos = node.pos; + mark.node = node.node; finalMarks.push(mark); } }); diff --git a/wax-prosemirror-schema/src/marks/commentMark.js b/wax-prosemirror-schema/src/marks/commentMark.js index 2c2f36a33..b946d7dd8 100644 --- a/wax-prosemirror-schema/src/marks/commentMark.js +++ b/wax-prosemirror-schema/src/marks/commentMark.js @@ -15,7 +15,7 @@ const comment = { class: hook.dom.getAttribute("class"), id: hook.dom.dataset.id, group: hook.dom.dataset.group, - conversation: hook.dom.dataset.conversation + conversation: JSON.parse(hook.dom.dataset.conversation) }); next(); } diff --git a/wax-prosemirror-utilities/src/document/DocumentHelpers.js b/wax-prosemirror-utilities/src/document/DocumentHelpers.js index 716b5c35a..37a09a354 100644 --- a/wax-prosemirror-utilities/src/document/DocumentHelpers.js +++ b/wax-prosemirror-utilities/src/document/DocumentHelpers.js @@ -62,10 +62,15 @@ const findChildrenByMark = (node, markType, descend) => { return findChildren(node, child => markType.isInSet(child.marks), descend); }; +export const findChildrenByAttr = (node, predicate, descend) => { + return findChildren(node, child => !!predicate(child.attrs), descend); +}; + export default { findMark, findBlockNodes, findChildrenByType, findInlineNodes, - findChildrenByMark + findChildrenByMark, + findChildrenByAttr }; -- GitLab