From 6e66ae7ff9e2f8ee02cb91d9011f3efdd05d4684 Mon Sep 17 00:00:00 2001 From: Codetrauma Date: Thu, 27 Feb 2025 11:48:15 -0800 Subject: [PATCH] feat: sidepanel now refreshes on subsequent plugin runs if still open --- src/entries/SidePanel/SidePanel.tsx | 10 ++++++++++ src/entries/SidePanel/types.ts | 2 ++ src/entries/utils.ts | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/src/entries/SidePanel/SidePanel.tsx b/src/entries/SidePanel/SidePanel.tsx index ebba5dc..112fdd0 100644 --- a/src/entries/SidePanel/SidePanel.tsx +++ b/src/entries/SidePanel/SidePanel.tsx @@ -60,6 +60,16 @@ export default function SidePanel(): ReactElement { setStarted(true); break; } + case SidePanelActionTypes.is_panel_open: { + return { isOpen: true }; + } + case SidePanelActionTypes.reset_panel: { + setConfig(null); + setHash(''); + setHex(''); + setStarted(false); + break; + } } }); }, []); diff --git a/src/entries/SidePanel/types.ts b/src/entries/SidePanel/types.ts index 74c1233..8459ef1 100644 --- a/src/entries/SidePanel/types.ts +++ b/src/entries/SidePanel/types.ts @@ -5,4 +5,6 @@ export enum SidePanelActionTypes { run_p2p_plugin_request = 'sidePanel/run_p2p_plugin_request', run_p2p_plugin_response = 'sidePanel/run_p2p_plugin_response', start_p2p_plugin = 'sidePanel/start_p2p_plugin', + is_panel_open = 'sidePanel/is_panel_open', + reset_panel = 'sidePanel/reset_panel', } diff --git a/src/entries/utils.ts b/src/entries/utils.ts index ba23b31..bb6b30c 100644 --- a/src/entries/utils.ts +++ b/src/entries/utils.ts @@ -23,6 +23,18 @@ export const openSidePanel = async () => { const { promise, resolve, reject } = deferredPromise(); try { + const response = await browser.runtime.sendMessage({ + type: SidePanelActionTypes.is_panel_open, + }); + + if (response?.isOpen) { + await browser.runtime.sendMessage({ + type: SidePanelActionTypes.reset_panel, + }); + resolve(); + return promise; + } + const [tab] = await browser.tabs.query({ active: true, currentWindow: true,