diff --git a/manifest.json b/manifest.json index c4ea503..c1e84d3 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_name__", "version": "1.3.4", - "manifest_version": 2, + "manifest_version": 3, "description": "__MSG_desc__", "homepage_url": "http://thomas-roberts.co.uk", "icons": { @@ -11,23 +11,16 @@ }, "default_locale": "en", "background": { - "scripts": [ - "src/bg/background.js" - ], - "persistent": true + "service_worker": "src/bg/background.js" }, - "browser_action": { + "action": { "default_icon": "icons/icon19.png", "default_title": "Wiktionary Search", "default_popup": "src/browser_action/browser_action.html" }, "options_ui": { - "page": "src/opt/options.html", - "chrome_style": true + "page": "src/opt/options.html" }, - "permissions": [ - "contextMenus", - "*://*.wiktionary.org/*", - "storage" - ] -} \ No newline at end of file + "permissions": ["contextMenus", "storage"], + "host_permissions": ["*://*.wiktionary.org/*"] +} diff --git a/src/bg/background.js b/src/bg/background.js index 81a120e..3ad6cb7 100644 --- a/src/bg/background.js +++ b/src/bg/background.js @@ -1,42 +1,42 @@ -// if you checked "fancy-settings" in extensionizr.com, uncomment this lines -// var settings = new Store("settings", { -// "sample_setting": "This is how you use Store.js to remember values" -// }); -//example of using a message handler from the inject scripts -var lang; -chrome.storage.sync.get("language", function(obj) { - if (!obj.language) { - lang = chrome.i18n.getMessage("iso"); - } -}); -chrome.storage.onChanged.addListener(function(changes, namespace) { - chrome.storage.sync.get("language", function(obj) { - lang = obj.language; - }); -}); - -chrome.extension.onMessage.addListener( - function(request, sender, sendResponse) { - chrome.pageAction.show(sender.tab.id); - sendResponse(); - }); +// Migrate to Manifest V3 service worker +let lang; -chrome.contextMenus.create({ - "title": chrome.i18n.getMessage("context"), - "contexts": ["selection"], - "onclick": function(e) { +chrome.storage.sync.get('language', function (obj) { + if (!obj.language) { + lang = chrome.i18n.getMessage('iso'); + } else { + lang = obj.language; + } +}); - var bkg = chrome.extension.getBackgroundPage(); +chrome.storage.onChanged.addListener(function (changes, namespace) { + chrome.storage.sync.get('language', function (obj) { + lang = obj.language; + }); +}); - var url = e.pageUrl; - var wikURL = "http://" + lang + ".wiktionary.org/wiki/"; +chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { + // pageAction is not available in MV3 service workers + // If you need to show the action, use chrome.action API from the popup or content script + sendResponse(); +}); - if (e.selectionText) { - wikURL += encodeURI(e.selectionText); - } - chrome.tabs.create({ - "url": wikURL - }); +chrome.runtime.onInstalled.addListener(() => { + chrome.contextMenus.create({ + id: 'wiktionary-search', + title: chrome.i18n.getMessage('context'), + contexts: ['selection'], + }); +}); +chrome.contextMenus.onClicked.addListener(function (e) { + if (e.menuItemId === 'wiktionary-search') { + let wikURL = 'http://' + lang + '.wiktionary.org/wiki/'; + if (e.selectionText) { + wikURL += encodeURI(e.selectionText); } -}); \ No newline at end of file + chrome.tabs.create({ + url: wikURL, + }); + } +});