-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.js
93 lines (70 loc) · 2.15 KB
/
background.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
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
// Runs as part of whole browser
// Know what has happened since user opne browser
console.log("BACKGROUND SCRIPT RUNNING");
// Current tabs
let model = {
currentTab: "",
knownTabs: {}
};
// Interacts with Popupjs and Contentjs
let view = {
init: () => {
// Update badge when focused tab changes
chrome.tabs.onActivated.addListener((data) => {
controller.updateCurrentTab(data.tabId);
view.badge();
});
// Message Router
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
switch (request.request) {
case "newPage":
controller.addTab(sender, request);
chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
controller.updateCurrentTab(tabs[0].id);
view.badge();
});
sendResponse(1);
console.log(model);
case "wordCount":
const wc = controller.currentWordCount();
if (!(wc)) {
sendResponse({wc: 0});
}
sendResponse({wc: wc});
default:
return 0
}
});
chrome.browserAction.setBadgeBackgroundColor({color : "#718093"});
},
// Updates badge
badge: () => {
const value = controller.currentWordCount();
if (value) {
chrome.browserAction.setBadgeText({text: value}, (data) => {
return 0;
});
}
},
};
// Interacts with model
let controller = {
updateCurrentTab: (tabId) => {
model.currentTab = tabId;
return 0;
},
addTab: (sender, request) => {
const tabId = sender.tab.id;
model.knownTabs[tabId] = request.wc;
return 0;
},
currentWordCount: () => {
let wordCount = model.knownTabs[model.currentTab];
if (!(wordCount)) {
return 0;
}
wordCount = wordCount.toString()
return wordCount;
}
};
view.init();