From b04bb1bfeb419604de9a87151a8baae405580449 Mon Sep 17 00:00:00 2001 From: Carlos Quintana Date: Thu, 19 May 2022 11:52:31 +0200 Subject: [PATCH] Allow to query if extension is installed --- src/background/index.js | 16 ++++++++++++++++ src/content_script/input_tools.js | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/background/index.js b/src/background/index.js index bfecca1..9b485d2 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -88,6 +88,20 @@ const isMessageAllowed = (url) => { return false; }; +/** + * Handle the event of a page querying if the SL extension is installed + * @return {{data: {version: string}, tag: string}} + */ +const handleExtensionInstalledQuery = () => { + const manifest = browser.runtime.getManifest(); + return { + tag: "EXTENSION_INSTALLED_RESPONSE", + data: { + version: manifest.version, + }, + }; +}; + /** * Register onMessage listener */ @@ -104,6 +118,8 @@ browser.runtime.onMessage.addListener(async function (request, sender) { if (request.tag === "EXTENSION_SETUP") { return await handleExtensionSetup(); + } else if (request.tag === "EXTENSION_INSTALLED_QUERY") { + return handleExtensionInstalledQuery(); } }); diff --git a/src/content_script/input_tools.js b/src/content_script/input_tools.js index 424c988..85f4265 100644 --- a/src/content_script/input_tools.js +++ b/src/content_script/input_tools.js @@ -245,6 +245,8 @@ if (!window._hasExecutedSlExtension) { if (!window.hasSlListenerRegistered) { window.hasSlListenerRegistered = true; + let hasProcessedSetup = false; + /** * Callback called for every event * @param {MessageEvent} event @@ -253,7 +255,15 @@ if (!window._hasExecutedSlExtension) { if (event.source !== window) return; if (!event.data.tag) return; if (event.data.tag === "PERFORM_EXTENSION_SETUP") { - await sendMessageToBackground("EXTENSION_SETUP"); + if (!hasProcessedSetup) { + hasProcessedSetup = true; + await sendMessageToBackground("EXTENSION_SETUP"); + } + } else if (event.data.tag === "EXTENSION_INSTALLED_QUERY") { + const res = await sendMessageToBackground( + "EXTENSION_INSTALLED_QUERY" + ); + window.postMessage(res); } };