summaryrefslogtreecommitdiff
path: root/data/extensions/tortm-browser-button@jeremybenthum/lib/config.js
blob: 37aeaf5b24e3637fc18ecdc1832a803c9bb28a3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var config = {};

config.welcome = {
  get version () {return app.storage.read("version")},
  set version (val) {app.storage.write("version", val)}
};

config.addon = {
  "check": "https://check.torproject.org/",
  set state (val) {app.storage.write("state", val)},
  set whitelist (val) {app.storage.write("whitelist", val)},
  get whitelist () {return app.storage.read("whitelist") || ''},
  "github": "https://github.com/jeremy-jr-benthum/tor-button/releases",
  get state () {return app.storage.read("state") !== undefined ? app.storage.read("state") : "OFF"}
};

config.request = function (url, callback) {
  var xhr = new XMLHttpRequest();
  try {
    xhr.onload = function () {xhr.status >= 200 && xhr.status < 304 ? callback("ok") : callback("error")};
    xhr.open("HEAD", url, true);
    xhr.onerror = function () {callback("error")};
    xhr.ontimeout = function () {callback("error")};
    xhr.send('');
  } catch (e) {callback("error")}
};

config.notifications = (function () {
  chrome.notifications.onClosed.addListener(function () {config.notifications.id = ''});
  chrome.notifications.onClicked.addListener(function (id) {if (id === config.notifications.id) app.tab.open(app.homepage() + "#faq")});
  /*  */
  return {
    "id": '',
    "create": function (message) {
      var iconUrl = /Firefox/.test(navigator.userAgent) ? "data/icons/ON/64.png" : chrome.runtime.getURL("data/icons/ON/64.png");
      var o = {"message": message, "type": "basic", "title": "Tor Browser Button", "iconUrl": iconUrl};
      if (config.notifications.id) {
        if (chrome.notifications.update) {
          return chrome.notifications.update(config.notifications.id, o, function () {});
        }
      }
      return chrome.notifications.create(o, function (id) {config.notifications.id = id});
    }
  }
})();