Skip to main content

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, InjectableContext } from '@hexajs-dev/common';

@Injectable({ context: InjectableContext.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.