turt2live / matrix-bot-sdk

TypeScript/JavaScript SDK for Matrix bots
MIT License
194 stars 68 forks source link

Error with listener list - every listeners are anonymous #365

Open alexgaill opened 1 month ago

alexgaill commented 1 month ago

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