mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Reimagine the badge
Trac 27385
This commit is contained in:
parent
0bded511b9
commit
e60f22833a
29 changed files with 401 additions and 351 deletions
|
@ -1,6 +1,110 @@
|
|||
/* global Util, chrome, Config, WebExtUI, Broker, Snowflake */
|
||||
/* eslint no-unused-vars: 0 */
|
||||
|
||||
/*
|
||||
UI
|
||||
*/
|
||||
|
||||
class WebExtUI extends UI {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.onConnect = this.onConnect.bind(this);
|
||||
this.onMessage = this.onMessage.bind(this);
|
||||
this.onDisconnect = this.onDisconnect.bind(this);
|
||||
this.initStats();
|
||||
chrome.runtime.onConnect.addListener(this.onConnect);
|
||||
}
|
||||
|
||||
initStats() {
|
||||
this.stats = [0];
|
||||
return setInterval((() => {
|
||||
this.stats.unshift(0);
|
||||
this.stats.splice(24);
|
||||
return this.postActive();
|
||||
}), 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
initToggle() {
|
||||
chrome.storage.local.get("snowflake-enabled", (result) => {
|
||||
if (result['snowflake-enabled'] !== void 0) {
|
||||
this.enabled = result['snowflake-enabled'];
|
||||
} else {
|
||||
log("Toggle state not yet saved");
|
||||
}
|
||||
this.setEnabled(this.enabled);
|
||||
});
|
||||
}
|
||||
|
||||
postActive() {
|
||||
var ref;
|
||||
return (ref = this.port) != null ? ref.postMessage({
|
||||
active: this.active,
|
||||
total: this.stats.reduce((function(t, c) {
|
||||
return t + c;
|
||||
}), 0),
|
||||
enabled: this.enabled
|
||||
}) : void 0;
|
||||
}
|
||||
|
||||
onConnect(port) {
|
||||
this.port = port;
|
||||
port.onDisconnect.addListener(this.onDisconnect);
|
||||
port.onMessage.addListener(this.onMessage);
|
||||
return this.postActive();
|
||||
}
|
||||
|
||||
onMessage(m) {
|
||||
this.enabled = m.enabled;
|
||||
this.setEnabled(this.enabled);
|
||||
this.postActive();
|
||||
chrome.storage.local.set({
|
||||
"snowflake-enabled": this.enabled
|
||||
}, function() {
|
||||
log("Stored toggle state");
|
||||
});
|
||||
}
|
||||
|
||||
onDisconnect() {
|
||||
this.port = null;
|
||||
}
|
||||
|
||||
setActive(connected) {
|
||||
super.setActive(connected);
|
||||
if (connected) {
|
||||
this.stats[0] += 1;
|
||||
}
|
||||
this.postActive();
|
||||
if (this.active) {
|
||||
return chrome.browserAction.setIcon({
|
||||
path: {
|
||||
32: "icons/status-running.png"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return chrome.browserAction.setIcon({
|
||||
path: {
|
||||
32: "icons/status-on.png"
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
setEnabled(enabled) {
|
||||
update();
|
||||
return chrome.browserAction.setIcon({
|
||||
path: {
|
||||
32: "icons/status-" + (enabled ? "on" : "off") + ".png"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
WebExtUI.prototype.port = null;
|
||||
|
||||
WebExtUI.prototype.stats = null;
|
||||
|
||||
/*
|
||||
Entry point.
|
||||
*/
|
||||
|
@ -30,7 +134,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific
|
|||
}
|
||||
};
|
||||
|
||||
if (!Util.featureDetect()) {
|
||||
if (!Util.hasWebRTC()) {
|
||||
chrome.runtime.onConnect.addListener(function(port) {
|
||||
return port.postMessage({
|
||||
missingFeature: true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue