summaryrefslogtreecommitdiffhomepage
path: root/app/lib/app-visibility.js
blob: d599f6941b33b37a4bcc17e636fbf59dffc913ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// @flow
import { ipcRenderer } from 'electron';

type EventHandler = (boolean) => any;

export default class AppVisiblityObserver {
  _handler: EventHandler;

  constructor(handler: EventHandler) {
    this._handler = handler;

    ipcRenderer.on('show-window', this._handleShowEvent).on('hide-window', this._handleHideEvent);
  }

  dispose() {
    ipcRenderer
      .removeListener('show-window', this._handleShowEvent)
      .removeListener('hide-window', this._handleHideEvent);
  }

  _handleShowEvent = (_event) => {
    this._handler(true);
  };

  _handleHideEvent = (_event) => {
    this._handler(false);
  };
}