From ca2533cafaa0fde625affe8785cf07edff324ac5 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 26 May 2018 14:00:45 +0100
Subject: [PATCH 1/4] delint

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
 electron_app/src/electron-main.js | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index 4ffe2110..c84fcb73 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -145,7 +145,9 @@ electron.ipcMain.on('settings_get', async function(ev) {
         }));
 
         ev.sender.send('settings', data);
-    } catch(e) { console.error(e); }
+    } catch (e) {
+        console.error(e);
+    }
 });
 
 electron.ipcMain.on('settings_set', function(ev, key, value) {
@@ -156,17 +158,18 @@ electron.ipcMain.on('settings_set', function(ev, key, value) {
 });
 
 electron.app.on('ready', () => {
-
     if (argv.devtools) {
         try {
-            const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer');
-            installExtension(REACT_DEVELOPER_TOOLS)
+            const { default: installExt, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer');
+            installExt(REACT_DEVELOPER_TOOLS)
                 .then((name) => console.log(`Added Extension: ${name}`))
                 .catch((err) => console.log('An error occurred: ', err));
-            installExtension(REACT_PERF)
+            installExt(REACT_PERF)
                 .then((name) => console.log(`Added Extension: ${name}`))
                 .catch((err) => console.log('An error occurred: ', err));
-        } catch(e) {console.log(e);}
+        } catch (e) {
+            console.log(e);
+        }
     }
 
 

From 8a4a6b2023d86f86427ee7984d0a51e9302deefb Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 26 May 2018 14:21:38 +0100
Subject: [PATCH 2/4] refactor hidden logic to be more resilient against
 electron weirdness

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
 electron_app/src/electron-main.js | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index c84fcb73..d9473dcf 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -101,6 +101,9 @@ electron.ipcMain.on('app_onAction', function(ev, payload) {
 electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing');
 
 const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirectory) => {
+    // If other instance launched with --hidden then skip showing window
+    if (commandLine.includes('--hidden')) return;
+
     // Someone tried to run a second instance, we should focus our window.
     if (mainWindow) {
         if (!mainWindow.isVisible()) mainWindow.show();
@@ -211,11 +214,17 @@ electron.app.on('ready', () => {
         brand: vectorConfig.brand || 'Riot',
     });
 
-    if (!argv.hidden) {
-        mainWindow.once('ready-to-show', () => {
+    mainWindow.once('ready-to-show', () => {
+        mainWindowState.manage(mainWindow);
+
+        if (!argv.hidden) {
+            console.log("Showing window");
             mainWindow.show();
-        });
-    }
+        } else {
+            // hide here explicitly because window manage above sometimes shows it
+            mainWindow.hide();
+        }
+    });
 
     mainWindow.on('closed', () => {
         mainWindow = global.mainWindow = null;
@@ -243,7 +252,6 @@ electron.app.on('ready', () => {
     }
 
     webContentsHandler(mainWindow.webContents);
-    mainWindowState.manage(mainWindow);
 });
 
 electron.app.on('window-all-closed', () => {

From 20dd2c0b585054e979901d9e9b6e0980b0e6c313 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 26 May 2018 14:36:25 +0100
Subject: [PATCH 3/4] tidy code

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
 electron_app/src/electron-main.js | 58 +++++++++++++++----------------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index d9473dcf..c5448cd3 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -23,7 +23,7 @@ const checkSquirrelHooks = require('./squirrelhooks');
 if (checkSquirrelHooks()) return;
 
 const argv = require('minimist')(process.argv);
-const electron = require('electron');
+const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu} = require('electron');
 const AutoLaunch = require('auto-launch');
 
 const tray = require('./tray');
@@ -33,8 +33,8 @@ const updater = require('./updater');
 
 const windowStateKeeper = require('electron-window-state');
 
-if (argv.profile) {
-    electron.app.setPath('userData', `${electron.app.getPath('userData')}-${argv.profile}`);
+if (argv['profile']) {
+    app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`);
 }
 
 let vectorConfig = {};
@@ -62,14 +62,14 @@ process.on('uncaughtException', function(error) {
 });
 
 let focusHandlerAttached = false;
-electron.ipcMain.on('setBadgeCount', function(ev, count) {
-    electron.app.setBadgeCount(count);
-    if (count === 0) {
+ipcMain.on('setBadgeCount', function(ev, count) {
+    app.setBadgeCount(count);
+    if (count === 0 && mainWindow) {
         mainWindow.flashFrame(false);
     }
 });
 
-electron.ipcMain.on('loudNotification', function() {
+ipcMain.on('loudNotification', function() {
     if (process.platform === 'win32' && mainWindow && !mainWindow.isFocused() && !focusHandlerAttached) {
         mainWindow.flashFrame(true);
         mainWindow.once('focus', () => {
@@ -81,16 +81,16 @@ electron.ipcMain.on('loudNotification', function() {
 });
 
 let powerSaveBlockerId;
-electron.ipcMain.on('app_onAction', function(ev, payload) {
+ipcMain.on('app_onAction', function(ev, payload) {
     switch (payload.action) {
         case 'call_state':
-            if (powerSaveBlockerId && electron.powerSaveBlocker.isStarted(powerSaveBlockerId)) {
+            if (powerSaveBlockerId && powerSaveBlocker.isStarted(powerSaveBlockerId)) {
                 if (payload.state === 'ended') {
-                    electron.powerSaveBlocker.stop(powerSaveBlockerId);
+                    powerSaveBlocker.stop(powerSaveBlockerId);
                 }
             } else {
                 if (payload.state === 'connected') {
-                    powerSaveBlockerId = electron.powerSaveBlocker.start('prevent-display-sleep');
+                    powerSaveBlockerId = powerSaveBlocker.start('prevent-display-sleep');
                 }
             }
             break;
@@ -98,9 +98,9 @@ electron.ipcMain.on('app_onAction', function(ev, payload) {
 });
 
 
-electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing');
+app.commandLine.appendSwitch('--enable-usermedia-screen-capturing');
 
-const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirectory) => {
+const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
     // If other instance launched with --hidden then skip showing window
     if (commandLine.includes('--hidden')) return;
 
@@ -114,7 +114,7 @@ const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirector
 
 if (shouldQuit) {
     console.log('Other instance detected: exiting');
-    electron.app.exit();
+    app.exit();
 }
 
 
@@ -139,7 +139,7 @@ const settings = {
     },
 };
 
-electron.ipcMain.on('settings_get', async function(ev) {
+ipcMain.on('settings_get', async function(ev) {
     const data = {};
 
     try {
@@ -153,15 +153,15 @@ electron.ipcMain.on('settings_get', async function(ev) {
     }
 });
 
-electron.ipcMain.on('settings_set', function(ev, key, value) {
+ipcMain.on('settings_set', function(ev, key, value) {
     console.log(key, value);
     if (settings[key] && settings[key].set) {
         settings[key].set(value);
     }
 });
 
-electron.app.on('ready', () => {
-    if (argv.devtools) {
+app.on('ready', () => {
+    if (argv['devtools']) {
         try {
             const { default: installExt, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer');
             installExt(REACT_DEVELOPER_TOOLS)
@@ -176,9 +176,9 @@ electron.app.on('ready', () => {
     }
 
 
-    if (vectorConfig.update_base_url) {
-        console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`);
-        updater.start(vectorConfig.update_base_url);
+    if (vectorConfig['update_base_url']) {
+        console.log(`Starting auto update with base URL: ${vectorConfig['update_base_url']}`);
+        updater.start(vectorConfig['update_base_url']);
     } else {
         console.log('No update_base_url is defined: auto update is disabled');
     }
@@ -191,7 +191,7 @@ electron.app.on('ready', () => {
         defaultHeight: 768,
     });
 
-    mainWindow = global.mainWindow = new electron.BrowserWindow({
+    mainWindow = global.mainWindow = new BrowserWindow({
         icon: iconPath,
         show: false,
         autoHideMenuBar: true,
@@ -202,7 +202,7 @@ electron.app.on('ready', () => {
         height: mainWindowState.height,
     });
     mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`);
-    electron.Menu.setApplicationMenu(vectorMenu);
+    Menu.setApplicationMenu(vectorMenu);
 
     // explicitly hide because setApplicationMenu on Linux otherwise shows...
     // https://github.com/electron/electron/issues/9621
@@ -217,7 +217,7 @@ electron.app.on('ready', () => {
     mainWindow.once('ready-to-show', () => {
         mainWindowState.manage(mainWindow);
 
-        if (!argv.hidden) {
+        if (!argv['hidden']) {
             console.log("Showing window");
             mainWindow.show();
         } else {
@@ -254,15 +254,15 @@ electron.app.on('ready', () => {
     webContentsHandler(mainWindow.webContents);
 });
 
-electron.app.on('window-all-closed', () => {
-    electron.app.quit();
+app.on('window-all-closed', () => {
+    app.quit();
 });
 
-electron.app.on('activate', () => {
+app.on('activate', () => {
     mainWindow.show();
 });
 
-electron.app.on('before-quit', () => {
+app.on('before-quit', () => {
     global.appQuitting = true;
     if (mainWindow) {
         mainWindow.webContents.send('before-quit');
@@ -273,4 +273,4 @@ electron.app.on('before-quit', () => {
 // installer uses for the shortcut icon.
 // This makes notifications work on windows 8.1 (and is
 // a noop on other platforms).
-electron.app.setAppUserModelId('com.squirrel.riot-web.Riot');
+app.setAppUserModelId('com.squirrel.riot-web.Riot');

From e0bb6183a6aa8dff65b0dc9643fa27cb8dbb8337 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 26 May 2018 14:37:04 +0100
Subject: [PATCH 4/4] remove debug log

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
 electron_app/src/electron-main.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index c5448cd3..85955392 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -218,7 +218,6 @@ app.on('ready', () => {
         mainWindowState.manage(mainWindow);
 
         if (!argv['hidden']) {
-            console.log("Showing window");
             mainWindow.show();
         } else {
             // hide here explicitly because window manage above sometimes shows it