// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

import { powerMonitor } from 'electron';

export type InitializeOptions = {
  send(event: string): void;
};

export class PowerChannel {
  private static isInitialized = false;

  static initialize({ send }: InitializeOptions): void {
    if (PowerChannel.isInitialized) {
      throw new Error('PowerChannel already initialized');
    }
    PowerChannel.isInitialized = true;

    powerMonitor.on('suspend', () => {
      send('power-channel:suspend');
    });
    powerMonitor.on('resume', () => {
      send('power-channel:resume');
    });
    powerMonitor.on('lock-screen', () => {
      send('power-channel:lock-screen');
    });
  }
}