signal-desktop/app/PreventDisplaySleepService.ts

47 lines
1 KiB
TypeScript
Raw Normal View History

2021-12-10 16:53:10 -06:00
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { PowerSaveBlocker } from 'electron';
import { createLogger } from '../ts/logging/log.js';
2025-06-16 11:59:31 -07:00
const log = createLogger('PreventDisplaySleepService');
2021-12-10 16:53:10 -06:00
export class PreventDisplaySleepService {
private blockerId: undefined | number;
constructor(private powerSaveBlocker: PowerSaveBlocker) {}
2025-08-15 15:26:49 -07:00
isEnabled(): boolean {
return this.blockerId !== undefined;
}
2021-12-10 16:53:10 -06:00
setEnabled(isEnabled: boolean): void {
log.info(
`Prevent display sleep service: ${
isEnabled ? 'preventing' : 'allowing'
} display sleep`
);
if (isEnabled) {
this.#enable();
2021-12-10 16:53:10 -06:00
} else {
this.#disable();
2021-12-10 16:53:10 -06:00
}
}
#enable(): void {
2021-12-10 16:53:10 -06:00
if (this.blockerId !== undefined) {
return;
}
this.blockerId = this.powerSaveBlocker.start('prevent-display-sleep');
}
#disable(): void {
2021-12-10 16:53:10 -06:00
if (this.blockerId === undefined) {
return;
}
this.powerSaveBlocker.stop(this.blockerId);
delete this.blockerId;
}
}