Skip to content

Node EventListeners don't work when setting a state from component #1017

Open
@MrEnte

Description

I am developing a real time collaborative diagram editor. At the moment I am trying to implement the use case when a user sees a node is moved by another user. I thought that the EventListener positionChanged would be a nice fit for this use case. The Code looks like this:

When adding a node i add an EventListener. In there i change the state of serializedModel.

node.registerListener({
    positionChanged: (
        e: BaseEntityEvent<ClassNodeModel>
    ) => {
        window.console.error('positionChanged', e);
        setSerializedModel(model.serialize());
    },
});

serializedModel is just the return value of model.serialize().

Then there is this useEffect:

useEffect(() => {
      window.console.error('useEffect', serializedModel);
      sendJsonMessage({
          serialized_diagram: serializedModel,
      });
      engine.repaintCanvas();
  }, [serializedModel]);

In here a just send a message to my backend to synchronize with the other users.

The Problem right now is that the EventListener only works for a few seconds:
image

But when i do not set a state in the EventListener. So something likes this:

node.registerListener({
    positionChanged: (
        e: BaseEntityEvent<ClassNodeModel>
    ) => {
        window.console.error('positionChanged', e);
    },
});

It works
image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions