From 4e1704372f5973abbfaae6063a401dbdb595d846 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Tue, 22 Nov 2022 01:45:36 +0100 Subject: [PATCH] fix: browserAction.setIcon --- add-on/manifest.common.json | 3 ++ add-on/src/lib/ipfs-companion.js | 31 ++-------------- package-lock.json | 64 +++++++++++++++++++++----------- package.json | 2 +- 4 files changed, 50 insertions(+), 50 deletions(-) diff --git a/add-on/manifest.common.json b/add-on/manifest.common.json index bd932aafb..adf75fcde 100644 --- a/add-on/manifest.common.json +++ b/add-on/manifest.common.json @@ -29,6 +29,9 @@ "page": "dist/options/options.html" }, "web_accessible_resources": [ + "icons/png/ipfs-logo-off_19.png", + "icons/png/ipfs-logo-off_38.png", + "icons/png/ipfs-logo-off_128.png", "icons/ipfs-logo-on.svg", "icons/ipfs-logo-off.svg" ], diff --git a/add-on/src/lib/ipfs-companion.js b/add-on/src/lib/ipfs-companion.js index 2bd8aa677..119c5e40d 100644 --- a/add-on/src/lib/ipfs-companion.js +++ b/add-on/src/lib/ipfs-companion.js @@ -504,33 +504,8 @@ export default async function init () { return ('#' + r + g + b).toUpperCase() } - /* Alternative: raster images generated on the fly - const rasterIconDefinition = pMemoize((svgPath) => { - const rasterData = (size) => { - const icon = new Image() - icon.src = svgPath - const canvas = document.createElement('canvas') - const context = canvas.getContext('2d') - context.clearRect(0, 0, size, size) - context.drawImage(icon, 0, 0, size, size) - return context.getImageData(0, 0, size, size) - } - // icon sizes to cover ranges from: - // - https://bugs.chromium.org/p/chromium/issues/detail?id=647182 - // - https://developer.chrome.com/extensions/manifest/icons - const r19 = rasterData(19) - const r38 = rasterData(38) - const r128 = rasterData(128) - // return computed values to be cached by p-memoize - return { imageData: { 19: r19, 38: r38, 128: r128 } } - }) - */ - async function setBrowserActionIcon (iconPath) { - return browser.browserAction.setIcon(rasterIconDefinition(iconPath)) - /* Below fallback does not work since Chromium 80 - * (it fails in a way that does not produce error we can catch) - const iconDefinition = { path: iconPath } + let iconDefinition = { path: iconPath } try { // Try SVG first -- Firefox supports it natively await browser.browserAction.setIcon(iconDefinition) @@ -539,9 +514,9 @@ export default async function init () { // Chromium does not support SVG [ticket below is 8 years old, I can't even..] // https://bugs.chromium.org/p/chromium/issues/detail?id=29683 // Still, we want icon, so we precompute rasters of popular sizes and use them instead - await browser.browserAction.setIcon(rasterIconDefinition(iconPath)) + iconDefinition = await rasterIconDefinition(iconPath) + await browser.browserAction.setIcon(iconDefinition) } - */ } // OPTIONS diff --git a/package-lock.json b/package-lock.json index 01be4841e..faf67b6f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "multiaddr-to-uri": "8.0.0", "node-fetch": "2.6.7", "os-browserify": "0.3.0", - "p-memoize": "4.0.2", + "p-memoize": "7.1.1", "p-queue": "7.2.0", "p-wait-for": "4.1.0", "path-browserify": "1.0.1", @@ -12232,6 +12232,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "dependencies": { "p-defer": "^1.0.0" }, @@ -12243,6 +12244,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, "engines": { "node": ">=4" } @@ -14125,27 +14127,40 @@ } }, "node_modules/p-memoize": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.2.tgz", - "integrity": "sha512-REJQ6EIeFmvT9O/u0H/ZVWjRII/1/0GhckleQX0yn+Uk9EdXTtmfnrfa3FwF8ZUrfUEe8NInvlRa0ZBKlMxxTA==", - "deprecated": "4.0.2 has a bug which causes cache misses. Stay on 4.0.1 or upgrade to 5.0.0.", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-7.1.1.tgz", + "integrity": "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==", "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.0.0" + "mimic-fn": "^4.0.0", + "type-fest": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/p-memoize?sponsor=1" } }, "node_modules/p-memoize/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-memoize/node_modules/type-fest": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.2.0.tgz", + "integrity": "sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-queue": { @@ -28798,6 +28813,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" }, @@ -28805,7 +28821,8 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==" + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true } } }, @@ -30231,18 +30248,23 @@ } }, "p-memoize": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.2.tgz", - "integrity": "sha512-REJQ6EIeFmvT9O/u0H/ZVWjRII/1/0GhckleQX0yn+Uk9EdXTtmfnrfa3FwF8ZUrfUEe8NInvlRa0ZBKlMxxTA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-7.1.1.tgz", + "integrity": "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==", "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.0.0" + "mimic-fn": "^4.0.0", + "type-fest": "^3.0.0" }, "dependencies": { "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" + }, + "type-fest": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.2.0.tgz", + "integrity": "sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==" } } }, diff --git a/package.json b/package.json index a277683ef..94b056626 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "multiaddr-to-uri": "8.0.0", "node-fetch": "2.6.7", "os-browserify": "0.3.0", - "p-memoize": "4.0.2", + "p-memoize": "7.1.1", "p-queue": "7.2.0", "p-wait-for": "4.1.0", "path-browserify": "1.0.1",