Skip to content

Content duplication in Slate-Yjs offline syncing #382

@Maryam-Yumna

Description

@Maryam-Yumna

We were working on a collaborative editing project with Plate and YJs. We used the slate-yjs library, and we did the editor initialization as follows:

const sharedType = doc.getArray(“content”);
const editor = useMemo(() => {
const editor: any = withCursor(
withYjs(
withReact(withHistory(createPlateEditor({ plugins: plugins }))),
sharedType
),
provider.awareness
);
return editor;
}, [sharedType, provider, dbProvider]);

Everything is working well so far, but we are having an issue with the offline syncing, where the content gets duplicated when there is a concurrent change.

example:

  1. content before offline sync

Global warming is the long-term warming of the planet’s overall temperature. Though this warming trend has been going on for a long time, its pace has significantly increased in the last hundred years due to the burning of fossil fuels.

  1. when two users make concurrent changes to content

(If one user goes offline and changes the word “Though” to “Even though” and another user changes the word “Though” to “Although”, the whole content that is after that word is duplicated when the document gets synced.)
Global warming is the long-term warming of the planet’s overall temperature. Even though this warming trend has been going on for a long time, its pace has significantly increased in the last hundred years due to the burning of fossil fuels. Although this warming trend has been going on for a long time, its pace has significantly increased in the last hundred years due to the burning of fossil fuels.

Is there any particular reason for this issue and Is there a way to fix the issue?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions