AlarmsPort
AlarmsPort schedules and manages periodic or one-time background alarms that survive service worker restarts.
Context
- Availability: Background
- Source:
packages/ports/src/background/alarms/alarms.port.ts
Key Methods
create(name: string, alarmInfo?: WebExtAlarmCreateInfo): void- Schedule a new alarm.get(name: string): Promise<WebExtAlarm | undefined>- Retrieve alarm by name.getAll(): Promise<WebExtAlarm[]>- List all scheduled alarms.clear(name?: string): Promise<boolean>- Cancel a named alarm.clearAll(): Promise<boolean>- Cancel all alarms.onAlarmAddListener(listener: (alarm: WebExtAlarm) => void): void- Subscribe to alarm events.onAlarmRemoveListener(listener: (alarm: WebExtAlarm) => void): void- Unsubscribe from alarm events.
Usage
import { AlarmsPort } from '@hexajs-dev/ports';
import { Injectable, HexaContext } from '@hexajs-dev/common';
@Injectable({ context: HexaContext.Background })
export class DataSyncSchedulerService {
constructor(private readonly alarms: AlarmsPort) {}
startPeriodicSync() {
this.alarms.create('sync', { periodInMinutes: 30 });
this.alarms.onAlarmAddListener((alarm) => {
if (alarm.name === 'sync') {
this.runSync();
}
});
}
private runSync() {
// fetch and persist remote data
}
}
API Reference Appendix
Below is the exhaustive, auto-generated technical reference for all types, interfaces, and signatures associated with this API.
Classes
AlarmsPort
import { AlarmsPort } from '@hexajs-dev/ports';
class AlarmsPort { ... }
Methods
clear()
clear(name?: string): Promise<boolean>
clearAll()
clearAll(): Promise<boolean>
create()
create(name: string, alarmInfo?: HexaWebAlarmCreateInfo): void
get()
get(name: string): Promise<HexaWebAlarm | undefined>
getAll()
getAll(): Promise<HexaWebAlarm[]>
onAlarmAddListener()
onAlarmAddListener(listener: (alarm: HexaWebAlarm) => void): void
onAlarmRemoveListener()
onAlarmRemoveListener(listener: (alarm: HexaWebAlarm) => void): void