Allow to query if extension is installed

This commit is contained in:
Carlos Quintana
2022-05-19 11:52:31 +02:00
parent 9b2bb643b4
commit b04bb1bfeb
2 changed files with 27 additions and 1 deletions
+16
View File
@@ -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();
}
});
+11 -1
View File
@@ -245,6 +245,8 @@ if (!window._hasExecutedSlExtension) {
if (!window.hasSlListenerRegistered) {
window.hasSlListenerRegistered = true;
let hasProcessedSetup = false;
/**
* Callback called for every event
* @param {MessageEvent<any>} 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);
}
};