From aaf347fa68ce3c52ff28686edaa6e337371e1b90 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Mon, 17 Nov 2025 05:11:22 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20setInvalidContext?= =?UTF-8?q?=20=E9=87=8C=20`valueChangeListener.clear`=20=E6=9C=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/content/listener_manager.test.ts | 22 +++++++++++++++++++ src/app/service/content/listener_manager.ts | 7 ++++++ 2 files changed, 29 insertions(+) diff --git a/src/app/service/content/listener_manager.test.ts b/src/app/service/content/listener_manager.test.ts index a99e12386..ac562974d 100644 --- a/src/app/service/content/listener_manager.test.ts +++ b/src/app/service/content/listener_manager.test.ts @@ -109,4 +109,26 @@ describe.concurrent("ListenerManager(监听器管理器)", () => { lm.execute("solo", 100, "gone"); expect(spy).not.toHaveBeenCalled(); }); + + it.concurrent("clear()", () => { + const lm = new ListenerManager(); + const spyA = vi.fn(); + const spyB = vi.fn(); + const spyC = vi.fn(); + const spyD = vi.fn(); + + lm.add("k", spyA); + lm.add("k", spyB); + lm.add("z", spyC); + lm.add("k", spyD); + + lm.clear(); + + lm.execute("k", 9, "z"); + lm.execute("z", 1, "z"); + expect(spyA).not.toHaveBeenCalled(); + expect(spyB).not.toHaveBeenCalled(); + expect(spyC).not.toHaveBeenCalled(); + expect(spyD).not.toHaveBeenCalled(); + }); }); diff --git a/src/app/service/content/listener_manager.ts b/src/app/service/content/listener_manager.ts index c58ee146c..cc4de0f9e 100644 --- a/src/app/service/content/listener_manager.ts +++ b/src/app/service/content/listener_manager.ts @@ -37,4 +37,11 @@ export class ListenerManager void> { } return false; } + + public clear(): void { + for (const [_key, handlers] of this.listeners) { + handlers.clear(); + } + this.listeners.clear(); + } }