Ver código fonte

Bugfix multiple event listeners with the same name (#2165)

* Bugfix multiple event listeners with the same name

* Changelog

* changelog
filipzeta 2 anos atrás
pai
commit
5c474c6dfb
2 arquivos alterados com 3 adições e 1 exclusões
  1. 1 0
      CHANGELOG.md
  2. 2 1
      ts/packages/anchor/src/program/event.ts

+ 1 - 0
CHANGELOG.md

@@ -34,6 +34,7 @@ The minor version will be incremented upon a breaking change and the patch versi
 * lang: Fix parsing for bytes literals in the IDL. ([#2261](https://github.com/coral-xyz/anchor/pull/2261))
 * lang: Fix IDL `seed` generation for byte string literals. ([#2125](https://github.com/coral-xyz/anchor/pull/2125))
 * ts: Update seeds inference to allow nested user defined structs within the seeds ([#2198](https://github.com/coral-xyz/anchor/pull/2198))
+* event: Fix multiple event listeners with the same name. ([#2165](https://github.com/coral-xyz/anchor/pull/2165))
 
 ## [0.25.0] - 2022-07-05
 

+ 2 - 1
ts/packages/anchor/src/program/event.ts

@@ -78,7 +78,7 @@ export class EventManager {
     this._listenerIdCount += 1;
 
     // Store the listener into the event map.
-    if (!(eventName in this._eventCallbacks)) {
+    if (!this._eventListeners.has(eventName)) {
       this._eventListeners.set(eventName, []);
     }
     this._eventListeners.set(
@@ -138,6 +138,7 @@ export class EventManager {
     // Update both maps.
     this._eventCallbacks.delete(listener);
     listeners = listeners.filter((l) => l !== listener);
+    this._eventListeners.set(eventName, listeners);
     if (listeners.length === 0) {
       this._eventListeners.delete(eventName);
     }