From 78fe68164fc23e79f4777884b869444d7fac6c51 Mon Sep 17 00:00:00 2001 From: windingwind <33902321+windingwind@users.noreply.github.com> Date: Thu, 14 Sep 2023 12:00:44 +0800 Subject: [PATCH] Remove reader events when plugin is disabled --- chrome/content/zotero/xpcom/reader.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/chrome/content/zotero/xpcom/reader.js b/chrome/content/zotero/xpcom/reader.js index 1ef80727f8..2ad2aaf620 100644 --- a/chrome/content/zotero/xpcom/reader.js +++ b/chrome/content/zotero/xpcom/reader.js @@ -1229,6 +1229,12 @@ class Reader { } this._setSidebarState(); }, 500); + + Zotero.Plugins.addObserver({ + shutdown: ({ id: pluginID }) => { + this._unregisterEventListenerByPluginID(pluginID); + } + }); } _dispatchEvent(event) { @@ -1269,13 +1275,17 @@ class Reader { * }); * }); */ - registerEventListener(type, handler) { - this._registeredListeners.push({ type, handler }); + registerEventListener(type, handler, pluginID = undefined) { + this._registeredListeners.push({ pluginID, type, handler }); } unregisterEventListener(type, handler) { this._registeredListeners = this._registeredListeners.filter(x => x.type === type && x.handler === handler); } + + _unregisterEventListenerByPluginID(pluginID) { + this._registeredListeners = this._registeredListeners.filter(x => x.pluginID !== pluginID); + } getSidebarWidth() { return this._sidebarWidth;