Skip to content

Error with listener list - every listeners are anonymous #365

@alexgaill

Description

@alexgaill

Describe the bug
When using MatrixClient.on() or MatrixClient.addListener(), every listener is saved as anonymous function or anonymous async function.
using MatrixClient.off() or MatrixClient.removeListener doesn't remove it because listener is not find.

To Reproduce

const listenIncidentProcess = (client: MatrixClient): void => {
  const event = 'room.message';
  const handler = handleIncidentRoomState(client);

  const isListenerRegistered = registeredListeners.some(listener =>
    listener.client === client && listener.event === event && listener.handler === handler
  );

  if (!isListenerRegistered) {
    client.addListener(event, handler);
    registeredListeners.push({ client, event, handler });
  }
};

const closeProcessListener = (roomId: string, userId: string, client: MatrixClient): void => {
  if (incidentRoomState[roomId]) {
    delete incidentRoomState[roomId][userId];
  }
  console.log(client.listeners('room.message'))
  client.removeListener('room.message', handleIncidentRoomState(client))
  console.log(client.listeners('room.message'))
}

Expected behavior
With client.listeners(), i expect to have a list with an id or a name for every listener that allow me to remove easily the one that i need to remove.

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions