-
Notifications
You must be signed in to change notification settings - Fork 1
/
counter.js
37 lines (33 loc) · 1.06 KB
/
counter.js
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
function updateBadgeCount()
{
var targetNodes = document.getElementsByClassName("navItemBadge");
var count = 0;
for (var i = 0; i < targetNodes.length; ++i)
{
// ignore the unreads in spam
// previousElementSibling is of class navItemLabel and has the name of the section in it (e.g., " Spam ")
if (targetNodes[i].previousElementSibling.innerHTML.trim().toLowerCase().localeCompare("spam") == 0)
{
continue;
}
count += parseInt(targetNodes[i].innerHTML);
}
count /= 2; // because Google Voice has duplicate nodes for some reason
var newTitle = "Voice" + (count > 0 ? " (" + count + ")" : "");
if (document.title !== newTitle)
{
document.title = newTitle;
}
}
// Update the badge every 5 seconds
setInterval(updateBadgeCount, 5000);
// update the badge as user clicks in the app, because GV updates the title with selected item's phone number
new MutationObserver(function(mutations) {
updateBadgeCount();
}).observe(
document.querySelector('title'), {
subtree: true,
characterData: true,
childList: true
}
);