Allow to query if extension is installed
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user