commit d4aa9ad2b3abd73c13e32a847d5a0247b4364e81 Author: Arlo Breault arlolra@gmail.com Date: Thu Sep 26 12:07:24 2019 -0400
Reorder enable checks
First check that it is enabled before doing feature testing.
This will be useful in the badge so that probing only happens if it is enabled. --- proxy/init-webext.js | 63 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 26 deletions(-)
diff --git a/proxy/init-webext.js b/proxy/init-webext.js index f6c0d0f..6789ffd 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -26,30 +26,40 @@ class WebExtUI extends UI { }
initToggle() { - if (!Util.hasWebRTC()) { - this.missingFeature = 'popupWebRTCOff'; - this.setEnabled(false); - return; - } - WS.probeWebsocket(config.relayAddr) - .then( - () => { - chrome.storage.local.get("snowflake-enabled", (result) => { - let enabled = this.enabled; - if (result['snowflake-enabled'] !== void 0) { - enabled = result['snowflake-enabled']; - } else { - log("Toggle state not yet saved"); - } - this.setEnabled(enabled); - }); - }, - () => { - log('Could not connect to bridge.'); - this.missingFeature = 'popupBridgeUnreachable'; + // First, check if we have our status stored + (new Promise((resolve) => { + chrome.storage.local.get(["snowflake-enabled"], resolve); + })) + .then((result) => { + let enabled = this.enabled; + if (result['snowflake-enabled'] !== void 0) { + enabled = result['snowflake-enabled']; + } else { + log("Toggle state not yet saved"); + } + // If it isn't enabled, stop + if (!enabled) { + this.setEnabled(enabled); + return; + } + // Otherwise, do feature checks + if (!Util.hasWebRTC()) { + this.missingFeature = 'popupWebRTCOff'; this.setEnabled(false); + return; } - ); + WS.probeWebsocket(config.relayAddr) + .then( + () => { + this.setEnabled(true); + }, + () => { + log('Could not connect to bridge.'); + this.missingFeature = 'popupBridgeUnreachable'; + this.setEnabled(false); + } + ); + }); }
postActive() { @@ -73,11 +83,12 @@ class WebExtUI extends UI { }
onMessage(m) { - this.setEnabled(m.enabled); - chrome.storage.local.set({ - "snowflake-enabled": this.enabled - }, function() { + (new Promise((resolve) => { + chrome.storage.local.set({ "snowflake-enabled": m.enabled }, resolve); + })) + .then(() => { log("Stored toggle state"); + this.initToggle(); }); }