-
Notifications
You must be signed in to change notification settings - Fork 81
Open
Labels
bugSomething isn't workingSomething isn't working
Description
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.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working