From 1cac2f79e9e22dc9ca8fd526d0b5c748aa508e55 Mon Sep 17 00:00:00 2001 From: Kayanski <44806566+Kayanski@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:26:41 +0200 Subject: [PATCH] Added close panel listener (#202) --- src/entries/Background/rpc.ts | 9 +++++++++ src/entries/SidePanel/SidePanel.tsx | 7 +++++++ src/entries/SidePanel/types.ts | 1 + 3 files changed, 17 insertions(+) diff --git a/src/entries/Background/rpc.ts b/src/entries/Background/rpc.ts index a50f6ad..95bcc65 100644 --- a/src/entries/Background/rpc.ts +++ b/src/entries/Background/rpc.ts @@ -1094,6 +1094,14 @@ async function handleRunPluginByURLRequest(request: BackgroundAction) { browser.runtime.onMessage.removeListener(onPluginRequest); }; + const onSidePanelClosing = async (req: any) => { + if (req.type === SidePanelActionTypes.panel_closing) { + browser.runtime.onMessage.removeListener(onSidePanelClosing); + defer.reject(new Error('user rejected.')); + } + + }; + const onMessage = async (req: BackgroundAction) => { if (req.type === BackgroundActiontype.run_plugin_by_url_response) { if (req.data) { @@ -1116,6 +1124,7 @@ async function handleRunPluginByURLRequest(request: BackgroundAction) { }; browser.runtime.onMessage.addListener(onMessage); + browser.runtime.onMessage.addListener(onSidePanelClosing); browser.windows.onRemoved.addListener(onPopUpClose); return defer.promise; diff --git a/src/entries/SidePanel/SidePanel.tsx b/src/entries/SidePanel/SidePanel.tsx index 253c532..89aa1b2 100644 --- a/src/entries/SidePanel/SidePanel.tsx +++ b/src/entries/SidePanel/SidePanel.tsx @@ -80,6 +80,13 @@ export default function SidePanel(): ReactElement { } } }); + document.addEventListener('visibilitychange', () => { + if (document.visibilityState === 'hidden') { + browser.runtime.sendMessage({ + type: SidePanelActionTypes.panel_closing, + }); + } + }); }, []); return ( diff --git a/src/entries/SidePanel/types.ts b/src/entries/SidePanel/types.ts index 8459ef1..762acd3 100644 --- a/src/entries/SidePanel/types.ts +++ b/src/entries/SidePanel/types.ts @@ -1,5 +1,6 @@ export enum SidePanelActionTypes { panel_opened = 'sidePanel/panel_opened', + panel_closing = 'sidePanel/panel_closing', execute_plugin_request = 'sidePanel/execute_plugin_request', execute_plugin_response = 'sidePanel/execute_plugin_response', run_p2p_plugin_request = 'sidePanel/run_p2p_plugin_request',