-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.js
41 lines (37 loc) · 1.01 KB
/
content.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
import DadJoke from './components/dad-joke';
let KneeSlapper;
let timeout;
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
const { action, setup, punchline, userTimeout, source } = request;
if (action === 'tellJoke') {
// async because we are using a setTimeout
(async () => {
if (
KneeSlapper &&
KneeSlapper.widget.getAttribute('fade') === null &&
source === 'background'
) {
return;
}
ensureReady(source);
KneeSlapper = new DadJoke(setup, punchline);
KneeSlapper.init();
timeout = setTimeout(() => {
KneeSlapper.fadeAway();
}, Number(userTimeout) * 1000 + 2000);
})();
// keep the messaging channel open for sendResponse
return true;
}
});
function ensureReady() {
if (KneeSlapper) {
// if we already have a joke, clean it up
KneeSlapper.remove();
KneeSlapper = undefined;
clearTimeout(timeout);
}
}
window.addEventListener('dad-joke-click', () => {
ensureReady();
});