aboutsummaryrefslogtreecommitdiffstats
path: root/src/electron/ipc-api/tray.js
blob: 43364c0edb594f69122187533ff774e842315eb6 (plain) (blame)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { Tray, Menu, ipcMain } from 'electron';
import path from 'path';

const INDICATOR_PLAIN = 'franz-taskbar';
const INDICATOR_UNREAD = 'franz-taskbar-unread';

const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png';

let trayIcon;

function getAsset(asset) {
  return path.join(
    __dirname, '..', '..', 'assets', 'images', 'tray', process.platform, `${asset}.${FILE_EXTENSION}`,
  );
}

export default (params) => {
  // if (process.platform === 'win32' || process.platform === 'linux') {
  trayIcon = new Tray(getAsset(INDICATOR_PLAIN));
  const trayMenuTemplate = [
    {
      label: 'Show Franz',
      click() {
        params.mainWindow.show();
      },
    }, {
      label: 'Quit Franz',
      click() {
        params.app.quit();
      },
    },
  ];

  const trayMenu = Menu.buildFromTemplate(trayMenuTemplate);
  trayIcon.setContextMenu(trayMenu);

  trayIcon.on('click', () => {
    params.mainWindow.show();
  });

  ipcMain.on('updateTrayIconIndicator', (event, args) => {
    trayIcon.setImage(getAsset(args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN));

    if (process.platform === 'darwin') {
      trayIcon.setPressedImage(getAsset(`${args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN}-active`));
    }
  });
};