Skip to content

Commit fe51fca

Browse files
committed
Ensures Registering Alarm Event Listener at Root Scope
Needed to make sure the service worker wakes up.
1 parent 89b4481 commit fe51fca

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/background.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Handle} from './lib/bridge/server';
22
import {InternalResponseBundle} from './lib/bridge/types';
33
import MessageSender = chrome.runtime.MessageSender;
4-
import {registerTradeAlarmIfPossible} from './lib/alarms/setup';
4+
import {alarmListener, registerTradeAlarmIfPossible} from './lib/alarms/setup';
55

66
function unifiedHandler(request: any, sender: MessageSender, sendResponse: (response?: any) => void) {
77
Handle(request, sender)
@@ -41,6 +41,11 @@ chrome.runtime.onMessageExternal.addListener((request, sender, sendResponse) =>
4141
return true;
4242
});
4343

44+
if (chrome.alarms) {
45+
// Install at the root level to make sure events wake up the service worker
46+
chrome.alarms.onAlarm.addListener(alarmListener);
47+
}
48+
4449
async function checkAlarmState() {
4550
await registerTradeAlarmIfPossible();
4651
}

src/lib/alarms/setup.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
import {PING_CSFLOAT_TRADE_STATUS_ALARM_NAME, pingTradeStatus} from './csfloat_trade_pings';
22
import {HasPermissions} from '../bridge/handlers/has_permissions';
33

4-
async function alarmListener(alarm: chrome.alarms.Alarm) {
4+
export async function alarmListener(alarm: chrome.alarms.Alarm) {
55
if (alarm.name === PING_CSFLOAT_TRADE_STATUS_ALARM_NAME) {
66
await pingTradeStatus();
77
}
88
}
99

1010
async function registerAlarmListenerIfPossible() {
11-
const hasPermissions = await HasPermissions.handleRequest({permissions: ['alarms'], origins: []}, {});
12-
if (!hasPermissions.granted) {
13-
return;
11+
if (chrome.alarms) {
12+
chrome.alarms.onAlarm.addListener(alarmListener);
1413
}
15-
// Prevent duplicate listeners
16-
chrome.alarms.onAlarm.removeListener(alarmListener);
17-
chrome.alarms.onAlarm.addListener(alarmListener);
1814
}
1915

2016
export async function registerTradeAlarmIfPossible() {
2117
const hasPermissions = await HasPermissions.handleRequest({permissions: ['alarms'], origins: []}, {});
2218
if (!hasPermissions.granted) {
2319
return;
2420
}
21+
22+
await registerAlarmListenerIfPossible();
23+
2524
const alarm = await chrome.alarms.get(PING_CSFLOAT_TRADE_STATUS_ALARM_NAME);
2625

2726
if (!alarm) {
@@ -30,6 +29,4 @@ export async function registerTradeAlarmIfPossible() {
3029
delayInMinutes: 1,
3130
});
3231
}
33-
34-
await registerAlarmListenerIfPossible();
3532
}

0 commit comments

Comments
 (0)