]> git.wh0rd.org - tt-rss.git/blob - utils/notifier/background.html
bee00560b4e45fa3321e41d42f936e81b278e628
[tt-rss.git] / utils / notifier / background.html
1 <html>
2 <script type="text/javascript">
3
4 var last_updated = 0;
5 var prefs_last_updated = 0;
6
7 function param_escape(arg) {
8 if (typeof encodeURIComponent != 'undefined')
9 return encodeURIComponent(arg);
10 else
11 return escape(arg);
12 }
13
14 function update() {
15 var d = new Date();
16 var login = localStorage["login"];
17 var single_user = localStorage["single_user"];
18
19 if (single_user == "1") login = "admin";
20
21 var requestUrl = localStorage["site_url"] + "/backend.php";
22 var params = "op=getUnread&fresh=1&login=" + param_escape(login);
23
24 var xhr = new XMLHttpRequest();
25
26
27 xhr.open("POST", requestUrl, true);
28 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
29 xhr.send(params);
30
31 xhr.onreadystatechange = function() {
32 if (xhr.readyState == 4) {
33
34 var icon = new Object();
35 var title = new Object();
36 var badge = new Object();
37 var badge_color = new Object();
38
39 // init stuff
40 icon.path = "images/normal.png";
41 title.title = "";
42 badge.text = "";
43 badge_color.color = [0, 0, 0, 0];
44
45 var show_badge = localStorage["show_badge"] == "1";
46 var show_fresh = localStorage["show_fresh"] == "1";
47
48 if (xhr.status == 200) {
49 var response = xhr.responseText.split(";");
50
51 var unread = parseInt(response[0]);
52
53 if (isNaN(unread)) unread = 0;
54
55 var fresh;
56
57 if (response.length == 2)
58 fresh = parseInt(response[1]);
59 else
60 fresh = 0;
61
62 if (isNaN(fresh)) fresh = 0;
63
64 if (unread > 0) {
65 icon.path = "images/alert.png";
66 title.title = "You have %s unread articles.".replace("%s", unread);
67
68 if (show_fresh && fresh > 0) {
69 badge.text = fresh + "";
70 badge_color.color = [0, 200, 0, 255];
71 } else {
72 badge.text = unread + "";
73 badge_color.color = [255, 0, 0, 255];
74 }
75
76 } else if (unread == -1) {
77 icon.path = "images/error.png";
78
79 var errorMsg = xhr.responseText.split(";")[1];
80
81 title.title = "Error: %s.".replace("%s", errorMsg.trim());
82
83 } else {
84 title.title = "You have no unread articles.";
85 }
86
87 localStorage["last_updated"] = d.getTime();
88 localStorage["last_error"] = "";
89 } else {
90 localStorage["last_error"] = xhr.responseText;
91
92 icon.path = "images/error.png";
93 title.title = "Error (%s) while updating.".replace("%s", xhr.status);
94 }
95
96 if (!show_badge) badge.text = "";
97
98 chrome.browserAction.setBadgeBackgroundColor(badge_color);
99 chrome.browserAction.setBadgeText(badge);
100 chrome.browserAction.setTitle(title);
101 chrome.browserAction.setIcon(icon);
102
103 }
104 };
105
106 }
107
108 function timeout() {
109
110 var update_interval;
111 var prefs_updated;
112
113 if (localStorage["update_interval"])
114 update_interval = localStorage["update_interval"] * 60 * 1000;
115 else
116 update_interval = 15 * 60 * 1000;
117
118 if (localStorage["prefs_updated"])
119 prefs_updated = localStorage["prefs_updated"];
120 else
121 prefs_updated = -1;
122
123 var d = new Date();
124
125 if (d.getTime() > last_updated + update_interval ||
126 prefs_updated != prefs_last_updated) {
127
128 last_updated = d.getTime();
129 prefs_last_updated = prefs_updated;
130 try {
131 update();
132 } catch (e) {
133 //
134 }
135 }
136
137 window.setTimeout("timeout()", 1000);
138 }
139
140 function init() {
141
142 chrome.browserAction.onClicked.addListener(function() {
143 var site_url = localStorage['site_url'];
144
145 if (site_url) {
146 var cp = new Object();
147
148 cp.url = site_url;
149
150 chrome.tabs.create(cp);
151 }
152
153 });
154
155 window.setTimeout("timeout()", 1000);
156
157 }
158 </script>
159
160 <body onload="init()"> </body>
161
162 </html>