1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-09-14 02:08:50 +02:00

[PM-6426] Finalizing documentation on BrowserTaskSchedulerService

This commit is contained in:
Cesar Gonzalez 2024-04-02 09:40:01 -05:00
parent 2ee6d48585
commit ec53cd9a22
No known key found for this signature in database
GPG Key ID: 3381A5457F8CCECF

View File

@ -206,12 +206,22 @@ export class BrowserTaskSchedulerService
globalThis.setTimeout(() => this.recoveredAlarms.clear(), 10 * 1000); globalThis.setTimeout(() => this.recoveredAlarms.clear(), 10 * 1000);
} }
/**
* Sets an active alarm in state.
*
* @param alarm - The active alarm to set.
*/
private async setActiveAlarm(alarm: ActiveAlarm): Promise<void> { private async setActiveAlarm(alarm: ActiveAlarm): Promise<void> {
const activeAlarms = await firstValueFrom(this.activeAlarms$); const activeAlarms = await firstValueFrom(this.activeAlarms$);
activeAlarms.push(alarm); activeAlarms.push(alarm);
await this.updateActiveAlarms(activeAlarms); await this.updateActiveAlarms(activeAlarms);
} }
/**
* Deletes an active alarm from state.
*
* @param name - The name of the active alarm to delete.
*/
private async deleteActiveAlarm(name: ScheduledTaskName): Promise<void> { private async deleteActiveAlarm(name: ScheduledTaskName): Promise<void> {
delete this.onAlarmHandlers[name]; delete this.onAlarmHandlers[name];
const activeAlarms = await firstValueFrom(this.activeAlarms$); const activeAlarms = await firstValueFrom(this.activeAlarms$);
@ -219,10 +229,21 @@ export class BrowserTaskSchedulerService
await this.updateActiveAlarms(filteredAlarms || []); await this.updateActiveAlarms(filteredAlarms || []);
} }
/**
* Updates the active alarms state with the given alarms.
*
* @param alarms - The alarms to update the state with.
*/
private async updateActiveAlarms(alarms: ActiveAlarm[]): Promise<void> { private async updateActiveAlarms(alarms: ActiveAlarm[]): Promise<void> {
await this.activeAlarmsState.update(() => alarms); await this.activeAlarmsState.update(() => alarms);
} }
/**
* Triggers a recovered alarm by deleting it from the recovered alarms set
*
* @param name - The name of the recovered alarm to trigger.
* @param periodInMinutes - The period in minutes of the recovered alarm.
*/
private async triggerRecoveredAlarm( private async triggerRecoveredAlarm(
name: ScheduledTaskName, name: ScheduledTaskName,
periodInMinutes?: number, periodInMinutes?: number,
@ -231,15 +252,30 @@ export class BrowserTaskSchedulerService
await this.triggerAlarm(name, periodInMinutes); await this.triggerAlarm(name, periodInMinutes);
} }
/**
* Sets up the on alarm listener to handle alarms.
*/
private setupOnAlarmListener(): void { private setupOnAlarmListener(): void {
BrowserApi.addListener(chrome.alarms.onAlarm, this.handleOnAlarm); BrowserApi.addListener(chrome.alarms.onAlarm, this.handleOnAlarm);
} }
/**
* Handles on alarm events, triggering the alarm if a handler exists.
*
* @param alarm - The alarm to handle.
*/
private handleOnAlarm = async (alarm: chrome.alarms.Alarm): Promise<void> => { private handleOnAlarm = async (alarm: chrome.alarms.Alarm): Promise<void> => {
const { name, periodInMinutes } = alarm; const { name, periodInMinutes } = alarm;
await this.triggerAlarm(name as ScheduledTaskName, periodInMinutes); await this.triggerAlarm(name as ScheduledTaskName, periodInMinutes);
}; };
/**
* Triggers an alarm by calling its handler and
* deleting it if it is a one-time alarm.
*
* @param name - The name of the alarm to trigger.
* @param periodInMinutes - The period in minutes of an interval alarm.
*/
private async triggerAlarm(name: ScheduledTaskName, periodInMinutes?: number): Promise<void> { private async triggerAlarm(name: ScheduledTaskName, periodInMinutes?: number): Promise<void> {
const handler = this.onAlarmHandlers[name]; const handler = this.onAlarmHandlers[name];
if (!periodInMinutes) { if (!periodInMinutes) {