text: import { app, Menu, Tray } from 'electron';
  import path from 'path';
  
  let tray;
  
  export default window => {
    let iconPath;
  
    /*
     * A maximized window can't be properly
     * restored when minimized to the taskbar
     * (it will be restored/showed as unmaximized).
     * 
     * window.isMaximized() will also return 
     * false when minimizing a maximized window.
     * 
     * The safest way to keep track of the 
     * maximized state using maximize and 
     * unmaximize events.
     */
    let isWindowMaximized = false;
    window.on('maximize', () => {
      isWindowMaximized = true;
    });
    window.on('unmaximize', () => {
      isWindowMaximized = false;
    });
  
    switch (process.platform) {
      case 'darwin': {
        iconPath = 'static/img/tray/mac/trayTemplate.png';
        break;
      }
      case 'win32': {
        iconPath = 'static/img/tray/windows/tray.ico';
        break;
      }
      default: {
        iconPath = 'static/img/tray/default/tray.png';
      }
    }
  
    tray = new Tray(process.env.NODE_ENV === 'development' ? iconPath : path.join(process.resourcesPath, iconPath));
  
    const restoreFromTray = () => {
      if (isWindowMaximized) {
        window.maximize();
      }
      window.show();
    };
  
    tray.on('double-click', restoreFromTray);
  
    tray.setToolTip('LBRY App');
  
    const template = [
      {
        label: `Open ${app.name}`,
        click: restoreFromTray,
      },
      { role: 'quit' },
    ];
    const contextMenu = Menu.buildFromTemplate(template);
    tray.setContextMenu(contextMenu);
  
    return tray;
  };
  