40 lines
919 B
TypeScript
40 lines
919 B
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { PowerSaveBlocker } from 'electron';
|
|
import * as log from '../ts/logging/log';
|
|
|
|
export class PreventDisplaySleepService {
|
|
private blockerId: undefined | number;
|
|
|
|
constructor(private powerSaveBlocker: PowerSaveBlocker) {}
|
|
|
|
setEnabled(isEnabled: boolean): void {
|
|
log.info(
|
|
`Prevent display sleep service: ${
|
|
isEnabled ? 'preventing' : 'allowing'
|
|
} display sleep`
|
|
);
|
|
|
|
if (isEnabled) {
|
|
this.enable();
|
|
} else {
|
|
this.disable();
|
|
}
|
|
}
|
|
|
|
private enable(): void {
|
|
if (this.blockerId !== undefined) {
|
|
return;
|
|
}
|
|
this.blockerId = this.powerSaveBlocker.start('prevent-display-sleep');
|
|
}
|
|
|
|
private disable(): void {
|
|
if (this.blockerId === undefined) {
|
|
return;
|
|
}
|
|
this.powerSaveBlocker.stop(this.blockerId);
|
|
delete this.blockerId;
|
|
}
|
|
}
|