The current examples in documentation and this repository aren't every helpful in the sense that they use an imported background.js.
Most extensions will be making use of this script and therefore can't set the service worker to be @inboxsdk/core/background.js in the webpack configuration file.
I had to do the following just to make this sdk realistically usable:
- Add the following code snippet to my
chrome.runtime.onMessage.addListener conditional tree
if (request.type === 'inboxsdk__injectPageWorld' && sender.tab) {
if (chrome.scripting) {
// MV3
chrome.scripting.executeScript({
target: { tabId: sender.tab.id },
world: 'MAIN',
files: ['pageWorld.js'],
});
sendResponse(true);
} else {
// MV2 fallback. Tell content script it needs to figure things out.
sendResponse(false);
}
}
- Add the
pageWorld.js file to my entry list in the webpack file.
entry: {
popup: PATHS.src + '/popup.jsx',
background: PATHS.src + '/background.js',
contentScript: PATHS.src + '/contentScript.js',
pageWorld: '@inboxsdk/core/pageWorld.js',
},
The documentation and/or example needs to be updated to show these extra steps if the package can't be improved to not need them.
The current examples in documentation and this repository aren't every helpful in the sense that they use an imported background.js.
Most extensions will be making use of this script and therefore can't set the service worker to be
@inboxsdk/core/background.jsin the webpack configuration file.I had to do the following just to make this sdk realistically usable:
chrome.runtime.onMessage.addListenerconditional treepageWorld.jsfile to my entry list in the webpack file.The documentation and/or example needs to be updated to show these extra steps if the package can't be improved to not need them.