-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackground.js
More file actions
95 lines (90 loc) · 2.71 KB
/
background.js
File metadata and controls
95 lines (90 loc) · 2.71 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// ID of the tumblr tab
var selectedId = -1;
// runnr object
var runnr = {
total: 0,
session: 0,
level: 0,
achievements: [
{ name: chrome.i18n.getMessage('achievement1') , distance: 8.848 },
{ name: chrome.i18n.getMessage('achievement2') , distance: 42.195 },
{ name: chrome.i18n.getMessage('achievement3') , distance: 2000 },
{ name: chrome.i18n.getMessage('achievement4') , distance: 2428 },
{ name: chrome.i18n.getMessage('achievement5') , distance: 9259 },
{ name: chrome.i18n.getMessage('achievement6') , distance: 21196 },
{ name: chrome.i18n.getMessage('achievement7') , distance: 40076 },
{ name: chrome.i18n.getMessage('achievement8') , distance: 300000 },
{ name: chrome.i18n.getMessage('achievement9') , distance: 384400 },
{ name: chrome.i18n.getMessage('achievement10') , distance: 19567577226 },
{ name: chrome.i18n.getMessage('achievement11') , distance: 9460730472580.8 },
{ name: chrome.i18n.getMessage('achievement12') , distance: 40018889899017 }
],
load: function(data) {
return {
total: runnr.total,
session: runnr.session
}
},
update: function(data) {
runnr.session = data.session;
if ((runnr.session + runnr.total) >= runnr.achievements[runnr.level].distance) {
return runnr.achievements[runnr.level++].name;
}
return false;
},
updatePopup: function() {
return {
level: runnr.level,
total: runnr.total + runnr.session,
achievements: runnr.achievements
}
},
save: function() {
runnr.total += runnr.session;
runnr.session = 0;
runnr.level = 0;
chrome.storage.sync.set({ runnr_total : runnr.total }, function() {
if (chrome.runtime.error) {
chrome.i18n.getMessage('save_error')
}
});
}
};
chrome.storage.sync.get('runnr_total', function(items) {
if (chrome.runtime.error) {
chrome.i18n.getMessage('load_error')
} else {
if (items.runnr_total !== undefined) {
runnr.total = items.runnr_total;
}
for (var i = 0; i < runnr.achievements.length; i++) {
if (runnr.total < runnr.achievements[i].distance) break;
}
runnr.level = i;
}
});
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
// On load, show icon
if (message.onTumblr){
selectedId = sender.tab.id;
chrome.pageAction.show(sender.tab.id);
}
// Do runnr.load() or runnr.update()
if (runnr.hasOwnProperty(message.action)) {
var data = runnr[message.action](message);
sendResponse({ data: data });
}
return true;
});
// On update, save current values
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo){
if (changeInfo.status == 'complete' && tabId == selectedId){
runnr.save();
}
});
// On close, save current values
chrome.tabs.onRemoved.addListener(function (tabId, removeInfo){
if (tabId == selectedId){
runnr.save();
}
});