aboutsummaryrefslogtreecommitdiffstats
path: root/src/index.js
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2017-10-25 11:52:30 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2017-10-25 11:52:30 +0200
commitca74c830e3fda49ec8dffbc68af069621865e228 (patch)
tree4dbe6c763fea423dc743eb3220754cd2be8f003f /src/index.js
parentre-reset environment variables (diff)
parentMerge pull request #108 from meetfranz/develop (diff)
downloadferdium-app-ca74c830e3fda49ec8dffbc68af069621865e228.tar.gz
ferdium-app-ca74c830e3fda49ec8dffbc68af069621865e228.tar.zst
ferdium-app-ca74c830e3fda49ec8dffbc68af069621865e228.zip
Merge branch 'master' into chore/travis-setup
Diffstat (limited to 'src/index.js')
-rw-r--r--src/index.js44
1 files changed, 35 insertions, 9 deletions
diff --git a/src/index.js b/src/index.js
index 3244c44ad..9ca059f48 100644
--- a/src/index.js
+++ b/src/index.js
@@ -2,21 +2,22 @@ import { app, BrowserWindow, shell } from 'electron';
2import fs from 'fs-extra'; 2import fs from 'fs-extra';
3import path from 'path'; 3import path from 'path';
4 4
5// eslint-disable-next-line 5/* eslint-disable */
6if (require('electron-squirrel-startup')) app.quit(); 6if (require('electron-squirrel-startup')) app.quit();
7 7
8import windowStateKeeper from 'electron-window-state'; // eslint-disable-line 8import windowStateKeeper from 'electron-window-state';
9 9
10import { isDevMode, isWindows } from './environment'; // eslint-disable-line 10import { isDevMode, isWindows } from './environment';
11import ipcApi from './electron/ipc-api'; // eslint-disable-line 11import ipcApi from './electron/ipc-api';
12import Settings from './electron/Settings'; // eslint-disable-line 12import Tray from './lib/Tray';
13import { appId } from './package.json'; // eslint-disable-line 13import Settings from './electron/Settings';
14import './electron/exception'; // eslint-disable-line 14import { appId } from './package.json';
15import './electron/exception';
16/* eslint-enable */
15 17
16// Keep a global reference of the window object, if you don't, the window will 18// Keep a global reference of the window object, if you don't, the window will
17// be closed automatically when the JavaScript object is garbage collected. 19// be closed automatically when the JavaScript object is garbage collected.
18let mainWindow; 20let mainWindow;
19const settings = new Settings();
20let willQuitApp = false; 21let willQuitApp = false;
21 22
22// Ensure that the recipe directory exists 23// Ensure that the recipe directory exists
@@ -27,6 +28,23 @@ if (isWindows) {
27 app.setAppUserModelId(appId); 28 app.setAppUserModelId(appId);
28} 29}
29 30
31// Force single window
32if (process.platform !== 'darwin') {
33 const isSecondInstance = app.makeSingleInstance(() => {
34 if (mainWindow) {
35 if (mainWindow.isMinimized()) mainWindow.restore();
36 mainWindow.focus();
37 }
38 });
39
40 if (isSecondInstance) {
41 app.quit();
42 }
43}
44
45// Initialize Settings
46const settings = new Settings();
47
30const createWindow = async () => { 48const createWindow = async () => {
31 // Remember window size 49 // Remember window size
32 const mainWindowState = windowStateKeeper({ 50 const mainWindowState = windowStateKeeper({
@@ -47,8 +65,11 @@ const createWindow = async () => {
47 autoHideMenuBar: true, 65 autoHideMenuBar: true,
48 }); 66 });
49 67
68 // Initialize System Tray
69 const trayIcon = new Tray(mainWindow);
70
50 // Initialize ipcApi 71 // Initialize ipcApi
51 ipcApi({ mainWindow, settings }); 72 ipcApi({ mainWindow, settings, trayIcon });
52 73
53 // Manage Window State 74 // Manage Window State
54 mainWindowState.manage(mainWindow); 75 mainWindowState.manage(mainWindow);
@@ -85,6 +106,7 @@ const createWindow = async () => {
85 106
86 if (settings.get('minimizeToSystemTray')) { 107 if (settings.get('minimizeToSystemTray')) {
87 mainWindow.setSkipTaskbar(true); 108 mainWindow.setSkipTaskbar(true);
109 trayIcon.show();
88 } 110 }
89 }); 111 });
90 112
@@ -102,6 +124,10 @@ const createWindow = async () => {
102 if (app.wasMaximized) { 124 if (app.wasMaximized) {
103 mainWindow.maximize(); 125 mainWindow.maximize();
104 } 126 }
127
128 if (!settings.get('enableSystemTray')) {
129 trayIcon.hide();
130 }
105 }); 131 });
106 132
107 mainWindow.on('show', () => { 133 mainWindow.on('show', () => {