diff --git a/.vscode/settings.json b/.vscode/settings.json index 56fc5ac..9c3bbac 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ "ardetector", "autodetect", "autodetection", + "beforeunload", "blackbar", "blackbars", "blackframe", @@ -36,6 +37,7 @@ "rescan", "resizer", "scrollbar", + "shitiness", "smallcaps", "suboption", "tabitem", diff --git a/src/ext/lib/comms/CommsServer.js b/src/ext/lib/comms/CommsServer.js index 3d273a6..7946bef 100644 --- a/src/ext/lib/comms/CommsServer.js +++ b/src/ext/lib/comms/CommsServer.js @@ -328,6 +328,12 @@ class CommsServer { this.handleMessage(message, sender, sendResponse); } + + // chrome shitiness mitigation + sendUnmarkPlayer(message) { + this.logger.log('info', 'comms', '[CommsServer.js::sendUnmarkPlayer] Chrome is a shit browser that doesn\'t do port.postMessage() in unload events, so we have to resort to inelegant hacks. If you see this, then the workaround method works.'); + this.processReceivedMessage(message, this.popupPort); + } } export default CommsServer; diff --git a/src/ext/uw-bg.js b/src/ext/uw-bg.js index 0440aa5..d6e2e27 100644 --- a/src/ext/uw-bg.js +++ b/src/ext/uw-bg.js @@ -305,6 +305,15 @@ class UWServer { selected: this.selectedSubitem } } + + // chrome shitiness mitigation + sendUnmarkPlayer(message) { + this.comms.sendUnmarkPlayer(message); + } } -var server = new UWServer(); \ No newline at end of file +var server = new UWServer(); + +window.sendUnmarkPlayer = (message) => { + server.sendUnmarkPlayer(message) +} \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index b502c86..078944b 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -29,6 +29,7 @@ }], "background": { + "persistent": true, "scripts": [ "ext/uw-bg.js" ] diff --git a/src/popup/App.vue b/src/popup/App.vue index 8d219c3..77deba2 100644 --- a/src/popup/App.vue +++ b/src/popup/App.vue @@ -227,6 +227,12 @@ export default { cmd: 'unmark-player', forwardToAll: true, }); + if (BrowserDetect.chrome) { + chrome.extension.getBackgroundPage().sendUnmarkPlayer({ + cmd: 'unmark-player', + forwardToAll: true, + }); + } }); // get info about current site from background script