Skip to content
Snippets Groups Projects
Commit 85eb7150 authored by chris's avatar chris
Browse files

force note rerender if last removed

parent 1c9e4a6e
No related branches found
No related tags found
1 merge request!190Find and replace
...@@ -165,6 +165,10 @@ const NotesArea = ComponentPlugin('notesArea'); ...@@ -165,6 +165,10 @@ const NotesArea = ComponentPlugin('notesArea');
const RightArea = ComponentPlugin('rightArea'); const RightArea = ComponentPlugin('rightArea');
const WaxOverlays = ComponentPlugin('waxOverlays'); const WaxOverlays = ComponentPlugin('waxOverlays');
const HiddenArea = styled.span`
display: none;
`;
const EditoriaLayout = ({ editor }) => { const EditoriaLayout = ({ editor }) => {
const { const {
view: { main }, view: { main },
...@@ -204,7 +208,7 @@ const EditoriaLayout = ({ editor }) => { ...@@ -204,7 +208,7 @@ const EditoriaLayout = ({ editor }) => {
{showNotes && ( {showNotes && (
<NotesAreaContainer> <NotesAreaContainer>
<NotesContainer id="notes-container"> <NotesContainer id="notes-container">
<NotesArea /> <NotesArea view={main} />
</NotesContainer> </NotesContainer>
<CommentsContainerNotes> <CommentsContainerNotes>
<RightArea area="notes" /> <RightArea area="notes" />
...@@ -216,6 +220,9 @@ const EditoriaLayout = ({ editor }) => { ...@@ -216,6 +220,9 @@ const EditoriaLayout = ({ editor }) => {
</Main> </Main>
<WaxOverlays /> <WaxOverlays />
<HiddenArea>
<NotesArea view={main} />
</HiddenArea>
</Wrapper> </Wrapper>
</ThemeProvider> </ThemeProvider>
); );
......
/* eslint react/prop-types: 0 */
import React, { useContext, useState, useMemo } from 'react'; import React, { useContext, useState, useMemo } from 'react';
import useDeepCompareEffect from 'use-deep-compare-effect'; import useDeepCompareEffect from 'use-deep-compare-effect';
import { differenceBy } from 'lodash'; import { differenceBy } from 'lodash';
...@@ -5,23 +6,20 @@ import { WaxContext } from 'wax-prosemirror-core'; ...@@ -5,23 +6,20 @@ import { WaxContext } from 'wax-prosemirror-core';
import { DocumentHelpers } from 'wax-prosemirror-utilities'; import { DocumentHelpers } from 'wax-prosemirror-utilities';
import NoteEditor from './NoteEditor'; import NoteEditor from './NoteEditor';
export default () => { export default ({ view: view }) => {
if (typeof view === 'undefined') return null;
const context = useContext(WaxContext); const context = useContext(WaxContext);
const {
view,
view: { main },
} = context;
const { const {
state: { tr }, state: { tr },
} = main; } = view;
const [notes, setNotes] = useState([]); const [notes, setNotes] = useState([]);
const cleanUpNoteViews = () => { const cleanUpNoteViews = () => {
if (view) { if (view) {
const currentNotes = DocumentHelpers.findChildrenByType( const currentNotes = DocumentHelpers.findChildrenByType(
main.state.doc, view.state.doc,
main.state.schema.nodes.footnote, view.state.schema.nodes.footnote,
true, true,
); );
if (notes.length > currentNotes.length) { if (notes.length > currentNotes.length) {
...@@ -31,7 +29,7 @@ export default () => { ...@@ -31,7 +29,7 @@ export default () => {
}); });
tr.setMeta('notesChanged', true); tr.setMeta('notesChanged', true);
main.dispatch(tr); view.dispatch(tr);
// const newView = Object.keys(view).reduce((object, key) => { // const newView = Object.keys(view).reduce((object, key) => {
// if (key !== difference[0].node.attrs.id) { // if (key !== difference[0].node.attrs.id) {
...@@ -44,12 +42,12 @@ export default () => { ...@@ -44,12 +42,12 @@ export default () => {
}; };
useDeepCompareEffect(() => { useDeepCompareEffect(() => {
setNotes(updateNotes(main)); setNotes(updateNotes(view));
cleanUpNoteViews(); cleanUpNoteViews();
}, [updateNotes(main)]); }, [updateNotes(view)]);
const noteComponent = useMemo( const noteComponent = useMemo(
() => <NoteEditor notes={notes} view={main} />, () => <NoteEditor notes={notes} view={view} />,
[notes], [notes],
); );
return <>{noteComponent}</>; return <>{noteComponent}</>;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment