Skip to content

Commit ed60fe8

Browse files
committed
Fix interval continuing after timeout (pause)
1 parent 5650cdd commit ed60fe8

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

src/contentScripts/worker.js

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,23 @@ const FIVE_SECONDS = 5 * 1000;
44

55
const maxClickAttempts = 5;
66
let isEnabled;
7-
let intervalId;
7+
let timeout;
8+
9+
const IntervalOperator = () => {
10+
let intervalId;
11+
12+
return {
13+
set: (handler, interval) => {
14+
clearInterval(intervalId);
15+
intervalId = setInterval(handler, interval);
16+
},
17+
clear: () => {
18+
clearInterval(intervalId);
19+
}
20+
};
21+
};
22+
23+
const interval = IntervalOperator();
824

925
function isLive() {
1026
return !!document.getElementsByClassName('live-indicator')[0];
@@ -23,7 +39,7 @@ function attemptToClick() {
2339
function waitForBonusButton() {
2440
let clickAttempts = 0;
2541
console.log('looking for button');
26-
intervalId = setInterval(() => {
42+
interval.set(() => {
2743
const clicked = attemptToClick();
2844
console.log('click', clicked);
2945
if (clicked) {
@@ -40,8 +56,8 @@ function waitForBonusButton() {
4056

4157
function pauseFor(duration) {
4258
console.log('pausing for', duration);
43-
clearInterval(intervalId);
44-
setTimeout(() => {
59+
interval.clear();
60+
timeout = setTimeout(() => {
4561
if (isLive()) {
4662
waitForBonusButton();
4763
} else {
@@ -52,9 +68,9 @@ function pauseFor(duration) {
5268

5369
function waitForWhenLive() {
5470
console.log('waiting when live');
55-
clearInterval(intervalId);
71+
interval.clear();
5672
// reusing the same interval
57-
intervalId = setInterval(() => {
73+
interval.set(() => {
5874
if (isLive()) {
5975
clearInterval(intervalId);
6076
waitForBonusButton();
@@ -64,13 +80,8 @@ function waitForWhenLive() {
6480

6581

6682
function initialize() {
67-
console.log('INTERVAL', intervalId);
68-
if (intervalId) {
69-
console.log('CLEARING');
70-
clearInterval(intervalId);
71-
}
72-
7383
console.log('initializing');
84+
clearTimeout(timeout);
7485

7586
// initial check for the button
7687
attemptToClick();
@@ -86,10 +97,10 @@ const onMessage = (message, sender) => {
8697
if (sender.id === browser.runtime.id) {
8798
isEnabled = message.isEnabled;
8899
if (isEnabled) {
89-
clearInterval(intervalId);
90100
initialize();
91101
} else {
92-
clearInterval(intervalId);
102+
interval.clear();
103+
clearTimeout(timeout);
93104
}
94105
}
95106
}

0 commit comments

Comments
 (0)