From 65b08f09521109550284af6aa4f21d490c500af8 Mon Sep 17 00:00:00 2001
From: Vikas Shashidhar
Date: Wed, 24 May 2017 19:02:49 +0530
Subject: [PATCH 01/26] Electron-17: Crash Reporter
1. Implemented crash reporter for both main and renderer processes
2. Fetch crash log details from Symphony.config
3. Send reports to a break pad server
---
config/Symphony.config | 1 +
demo/index.html | 13 +++++++++++++
js/crashReporter/index.js | 34 ++++++++++++++++++++++++++++++++++
js/main.js | 21 ++++++++++++++++++++-
js/preload/preloadMain.js | 11 +++++++++++
js/windowMgr.js | 34 ++++++++++++++++++++++++++++++++++
6 files changed, 113 insertions(+), 1 deletion(-)
create mode 100755 js/crashReporter/index.js
diff --git a/config/Symphony.config b/config/Symphony.config
index fd18abec..c6864d5e 100644
--- a/config/Symphony.config
+++ b/config/Symphony.config
@@ -1,5 +1,6 @@
{
"url": "https://foundation-dev.symphony.com",
+ "sendCrashReports": true,
"minimizeOnClose" : true,
"launchOnStartup" : true
}
\ No newline at end of file
diff --git a/demo/index.html b/demo/index.html
index d4d67749..5d4d67fe 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -36,6 +36,13 @@
+
+ Crash Process:
+
+
+
+
+
Badge Count:
@@ -165,6 +172,12 @@
console.log('bounds changed for=', arg)
}
+ // crash the renderer process
+ const crash = document.getElementById('crash');
+ crash.addEventListener('click', function () {
+ ssf.crashRendererProcess();
+ });
+
var getSources = document.getElementById('get-sources');
getSources.addEventListener('click', function() {
ssf.getMediaSources({types: ['window', 'screen']}, function(error, sources) {
diff --git a/js/crashReporter/index.js b/js/crashReporter/index.js
new file mode 100755
index 00000000..50cef570
--- /dev/null
+++ b/js/crashReporter/index.js
@@ -0,0 +1,34 @@
+'use strict';
+
+const {crashReporter} = require('electron');
+
+/**
+ * Setup the crash reporter with appropriate information
+ * @param sendCrashReports: An object to get crash information
+ * from the global config file
+ * @param detailObj: An object to send extra parameters
+ * via the crash reporter
+ */
+function setupCrashReporter(detailObj, sendCrashReports) {
+ // Will eventually have to fetch all these from the config file.
+ let crashReportInfo = {
+ companyName: "Symphony Communication Services, LLC",
+ submitURL: "http://crash.symphony.com",
+ autoSubmit: true,
+ uploadToServer: sendCrashReports,
+ extra: detailObj
+ }
+
+ // App store builds cannot use crash reporter, so, return if that's the case
+ if (process.platform === 'darwin' && process.mas) {
+ return
+ }
+
+ if (process.type === 'renderer' && !(process.platform === 'darwin')) {
+ return;
+ }
+
+ crashReporter.start(crashReportInfo);
+}
+
+exports.setupCrashReporter = setupCrashReporter;
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index f1b2d8fd..79c14d1f 100644
--- a/js/main.js
+++ b/js/main.js
@@ -7,9 +7,11 @@ const squirrelStartup = require('electron-squirrel-startup');
const AutoLaunch = require('auto-launch');
const urlParser = require('url');
const { getConfigField } = require('./config.js');
-const { isDevEnv} = require('./utils/misc.js');
+const { isDevEnv } = require('./utils/misc.js');
const protocolHandler = require('./protocolHandler');
+const crashReporter = require('./crashReporter');
+
// used to check if a url was opened when the app was already open
let isAppAlreadyOpen = false;
@@ -161,6 +163,20 @@ function createWin(urlFromConfig) {
windowMgr.createMainWindow(url);
}
+/**
+ * Get crash info from global config and setup crash reporter for Main Process.
+ */
+function initializeCrashReporter () {
+ getConfigField('sendCrashReports').then(
+ function (data) {
+ crashReporter.setupCrashReporter({'window': 'main'}, data);
+ }
+ ).catch(function (err) {
+ let title = 'Error loading configuration';
+ electron.dialog.showErrorBox(title, title + ': ' + err);
+ })
+}
+
/**
* processes protocol action for windows clients
* @param argv {Array} an array of command line arguments
@@ -207,3 +223,6 @@ function handleProtocolAction(uri) {
protocolHandler.processProtocolAction(uri);
}
}
+
+// Initialize the crash reporter
+initializeCrashReporter();
\ No newline at end of file
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 0f78d090..4994805a 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -18,6 +18,7 @@ const apiEnums = require('../enums/api.js');
const apiCmds = apiEnums.cmds;
const apiName = apiEnums.apiName;
const getMediaSources = require('../desktopCapturer/getSources');
+const crashReporter = require('../crashReporter');
// hold ref so doesn't get GC'ed
const local = {
@@ -32,6 +33,9 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
});
+// Setup the crash reporter
+crashReporter.setupCrashReporter({'window': 'preloadMain'});
+
createAPI();
// creates API exposed from electron.
@@ -88,6 +92,13 @@ function createAPI() {
*/
ScreenSnippet: remote.require('./screenSnippet/ScreenSnippet.js'),
+ /**
+ * Provides API to crash the renderer process that calls this function
+ */
+ crashRendererProcess: function () {
+ process.crash();
+ },
+
/**
* Brings window forward and gives focus.
* @param {String} windowName Name of window. Note: main window name is 'main'
diff --git a/js/windowMgr.js b/js/windowMgr.js
index 8406d421..f8584c73 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -6,6 +6,8 @@ const BrowserWindow = electron.BrowserWindow;
const path = require('path');
const nodeURL = require('url');
const querystring = require('querystring');
+const {dialog} = require('electron');
+const {shell} = require('electron');
const { getTemplate, getMinimizeOnClose } = require('./menus/menuTemplate.js');
const loadErrors = require('./dialogs/showLoadError.js');
@@ -20,6 +22,8 @@ const activityDetection = require('./activityDetection/activityDetection.js');
const throttle = require('./utils/throttle.js');
const { getConfigField, updateConfigField } = require('./config.js');
+const crashReporter = require('./crashReporter');
+
//context menu
const contextMenu = require('./menus/contextMenu.js');
@@ -68,6 +72,18 @@ function doCreateMainWindow(initialUrl, initialBounds) {
let url = initialUrl;
let key = getGuid();
+ /**
+ * Get crash info from global config and setup crash reporter.
+ */
+ getConfigField('sendCrashReports').then(
+ function (data) {
+ crashReporter.setupCrashReporter({'window': 'main'}, data);
+ }
+ ).catch(function (err) {
+ let title = 'Error loading configuration';
+ electron.dialog.showErrorBox(title, title + ': ' + err);
+ });
+
let newWinOpts = {
title: 'Symphony',
show: true,
@@ -146,6 +162,24 @@ function doCreateMainWindow(initialUrl, initialBounds) {
loadErrors.showLoadFailure(mainWindow, validatedURL, errorDesc, errorCode, retry);
});
+ // In case a renderer process crashes, provide an
+ // option for the user to either reload or close the window
+ mainWindow.webContents.on('crashed', function () {
+ const options = {
+ type: 'error',
+ title: 'Renderer Process Crashed',
+ message: 'Uh oh! Looks like we have had a crash. Please reload or close this window.',
+ buttons: ['Reload', 'Close']
+ };
+
+ dialog.showMessageBox(options, function (index) {
+ if (index === 0) {
+ mainWindow.reload();
+ }
+ else mainWindow.close();
+ });
+ });
+
addWindowKey(key, mainWindow);
mainWindow.loadURL(url);
From abdd8da1fa5158d34f56ffe1de6cb1df73b69459 Mon Sep 17 00:00:00 2001
From: Vikas Shashidhar
Date: Mon, 5 Jun 2017 16:09:31 +0530
Subject: [PATCH 02/26] 1. Crash Details such as Company Name and Crashpad URL
are now being fetched from the global config file.
---
config/Symphony.config | 6 +++++-
js/crashReporter/index.js | 25 ++++++++++++++++---------
js/main.js | 2 +-
js/preload/preloadMain.js | 7 ++++++-
js/windowMgr.js | 2 +-
5 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/config/Symphony.config b/config/Symphony.config
index c6864d5e..d4f25ee0 100644
--- a/config/Symphony.config
+++ b/config/Symphony.config
@@ -1,6 +1,10 @@
{
"url": "https://foundation-dev.symphony.com",
- "sendCrashReports": true,
+ "crashReporterDetails": {
+ "backendURL": "http://crash.symphony.com/",
+ "sendCrashReports": true,
+ "autoSubmit": true
+ },
"minimizeOnClose" : true,
"launchOnStartup" : true
}
\ No newline at end of file
diff --git a/js/crashReporter/index.js b/js/crashReporter/index.js
index 50cef570..32cc3bb2 100755
--- a/js/crashReporter/index.js
+++ b/js/crashReporter/index.js
@@ -1,24 +1,31 @@
'use strict';
+const electron = require('electron');
const {crashReporter} = require('electron');
+const {app} = process.type === 'browser' ? electron : electron.remote;
/**
* Setup the crash reporter with appropriate information
- * @param sendCrashReports: An object to get crash information
+ * @param crashReporterDetails: An object to get crash information
* from the global config file
* @param detailObj: An object to send extra parameters
* via the crash reporter
*/
-function setupCrashReporter(detailObj, sendCrashReports) {
- // Will eventually have to fetch all these from the config file.
- let crashReportInfo = {
- companyName: "Symphony Communication Services, LLC",
- submitURL: "http://crash.symphony.com",
- autoSubmit: true,
- uploadToServer: sendCrashReports,
- extra: detailObj
+function setupCrashReporter(detailObj, crashReporterDetails) {
+
+ // Fetch details from config file
+ if (!crashReporterDetails){
+ return
}
+ let crashReportInfo = {
+ companyName: app.getName(),
+ submitURL: crashReporterDetails.backendURL,
+ autoSubmit: crashReporterDetails.autoSubmit,
+ uploadToServer: crashReporterDetails.sendCrashReports,
+ extra: detailObj
+ };
+
// App store builds cannot use crash reporter, so, return if that's the case
if (process.platform === 'darwin' && process.mas) {
return
diff --git a/js/main.js b/js/main.js
index 79c14d1f..107ee0da 100644
--- a/js/main.js
+++ b/js/main.js
@@ -167,7 +167,7 @@ function createWin(urlFromConfig) {
* Get crash info from global config and setup crash reporter for Main Process.
*/
function initializeCrashReporter () {
- getConfigField('sendCrashReports').then(
+ getConfigField('crashReporterDetails').then(
function (data) {
crashReporter.setupCrashReporter({'window': 'main'}, data);
}
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 4994805a..e3565bef 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -34,7 +34,12 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
// Setup the crash reporter
-crashReporter.setupCrashReporter({'window': 'preloadMain'});
+var demoData = {
+ "backendURL": "http://localhost:1127/post",
+ "sendCrashReports": true,
+ "autoSubmit": true
+};
+crashReporter.setupCrashReporter({'window': 'preloadMain'}, demoData);
createAPI();
diff --git a/js/windowMgr.js b/js/windowMgr.js
index f8584c73..6ac43e33 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -75,7 +75,7 @@ function doCreateMainWindow(initialUrl, initialBounds) {
/**
* Get crash info from global config and setup crash reporter.
*/
- getConfigField('sendCrashReports').then(
+ getConfigField('crashReporterDetails').then(
function (data) {
crashReporter.setupCrashReporter({'window': 'main'}, data);
}
From cc1c50945e33e772ad6c78afad1574fb91d5c306 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Fri, 14 Jul 2017 09:43:03 +0530
Subject: [PATCH 03/26] changed the default url for the crash server
---
config/Symphony.config | 2 +-
js/preload/preloadMain.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/Symphony.config b/config/Symphony.config
index 4e40aa90..0f459520 100644
--- a/config/Symphony.config
+++ b/config/Symphony.config
@@ -9,7 +9,7 @@
"display": ""
},
"crashReporterDetails": {
- "backendURL": "http://crash.symphony.com/",
+ "backendURL": "https://crash.symphony.com/",
"sendCrashReports": true,
"autoSubmit": true
}
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 3c31a1a6..6a5519a9 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -39,7 +39,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
// Setup the crash reporter
var demoData = {
- "backendURL": "http://localhost:1127/post",
+ "backendURL": "https://crash.symphony.com/",
"sendCrashReports": true,
"autoSubmit": true
};
From 9de7e3f7e8edf7ddce2eeb15fd097ea47357f27c Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Fri, 4 Aug 2017 13:21:15 +0530
Subject: [PATCH 04/26] Electron-158 - Removed spellchecker dependencies from
aip
---
installer/win/Symphony-x64.aip | 37 ++++------------------------------
1 file changed, 4 insertions(+), 33 deletions(-)
diff --git a/installer/win/Symphony-x64.aip b/installer/win/Symphony-x64.aip
index 68263679..ea740ada 100644
--- a/installer/win/Symphony-x64.aip
+++ b/installer/win/Symphony-x64.aip
@@ -43,27 +43,16 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -71,7 +60,6 @@
-
@@ -114,34 +102,28 @@
-
-
-
+
-
+
-
-
-
-
@@ -188,10 +170,7 @@
-
-
-
@@ -204,7 +183,6 @@
-
@@ -219,10 +197,6 @@
-
-
-
-
@@ -239,8 +213,6 @@
-
-
@@ -256,12 +228,10 @@
-
-
-
+
@@ -464,6 +434,7 @@
+
From be55c4df8442647d4a0b9173f5c309df8c750eab Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Wed, 13 Sep 2017 16:31:09 +0530
Subject: [PATCH 05/26] electron-17: disabled uploading crash reports to server
---
js/crashReporter/index.js | 2 +-
js/preload/preloadMain.js | 2 +-
js/windowMgr.js | 9 ++-------
3 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/js/crashReporter/index.js b/js/crashReporter/index.js
index 32cc3bb2..b4783dfe 100755
--- a/js/crashReporter/index.js
+++ b/js/crashReporter/index.js
@@ -22,7 +22,7 @@ function setupCrashReporter(detailObj, crashReporterDetails) {
companyName: app.getName(),
submitURL: crashReporterDetails.backendURL,
autoSubmit: crashReporterDetails.autoSubmit,
- uploadToServer: crashReporterDetails.sendCrashReports,
+ uploadToServer: false,
extra: detailObj
};
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index fbaa4ed5..a3e61099 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -55,7 +55,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
// Setup the crash reporter
-var demoData = {
+let demoData = {
"backendURL": "https://crash.symphony.com/",
"sendCrashReports": true,
"autoSubmit": true
diff --git a/js/windowMgr.js b/js/windowMgr.js
index 7c41eee1..94a75116 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -16,16 +16,11 @@ const log = require('./log.js');
const logLevels = require('./enums/logLevels.js');
const notify = require('./notify/electron-notify.js');
const eventEmitter = require('./eventEmitter');
-
const throttle = require('./utils/throttle.js');
const { getConfigField, updateConfigField } = require('./config.js');
const { isMac, isNodeEnv } = require('./utils/misc');
-
const crashReporter = require('./crashReporter');
-//context menu
-const contextMenu = require('./menus/contextMenu.js');
-
// show dialog when certificate errors occur
require('./dialogs/showCertError.js');
@@ -203,11 +198,11 @@ function doCreateMainWindow(initialUrl, initialBounds) {
const options = {
type: 'error',
title: 'Renderer Process Crashed',
- message: 'Uh oh! Looks like we have had a crash. Please reload or close this window.',
+ message: 'Oops! Looks like we have had a crash. Please reload or close this window.',
buttons: ['Reload', 'Close']
};
- dialog.showMessageBox(options, function (index) {
+ electron.dialog.showMessageBox(options, function (index) {
if (index === 0) {
mainWindow.reload();
}
From 9f7bc10287590911fe14e97f18b2b0a3dcf769dd Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Thu, 14 Sep 2017 21:08:42 +0530
Subject: [PATCH 06/26] electron-17: added support to get crash directory info
for users amongst other minor changes
---
config/Symphony.config | 6 +++---
js/crashReporter/index.js | 44 ++++++++++++++++++++++-----------------
js/main.js | 5 +++--
js/menus/menuTemplate.js | 29 ++++++++++++++++++++++----
js/preload/preloadMain.js | 9 +-------
js/windowMgr.js | 13 +-----------
6 files changed, 58 insertions(+), 48 deletions(-)
diff --git a/config/Symphony.config b/config/Symphony.config
index c3f4e882..b3fb9d64 100644
--- a/config/Symphony.config
+++ b/config/Symphony.config
@@ -8,8 +8,8 @@
"display": ""
},
"crashReporterDetails": {
- "backendURL": "https://crash.symphony.com/",
- "sendCrashReports": true,
- "autoSubmit": true
+ "submitURL": "https://crash.symphony.com/",
+ "uploadToServer": false,
+ "companyName": "Symphony"
}
}
\ No newline at end of file
diff --git a/js/crashReporter/index.js b/js/crashReporter/index.js
index b4783dfe..786504a0 100755
--- a/js/crashReporter/index.js
+++ b/js/crashReporter/index.js
@@ -1,32 +1,19 @@
'use strict';
-const electron = require('electron');
const {crashReporter} = require('electron');
-const {app} = process.type === 'browser' ? electron : electron.remote;
+
+let crashReporterDetails;
+let crashDirectoryPath;
/**
* Setup the crash reporter with appropriate information
- * @param crashReporterDetails: An object to get crash information
* from the global config file
* @param detailObj: An object to send extra parameters
* via the crash reporter
*/
-function setupCrashReporter(detailObj, crashReporterDetails) {
+function setupCrashReporter(detailObj) {
- // Fetch details from config file
- if (!crashReporterDetails){
- return
- }
-
- let crashReportInfo = {
- companyName: app.getName(),
- submitURL: crashReporterDetails.backendURL,
- autoSubmit: crashReporterDetails.autoSubmit,
- uploadToServer: false,
- extra: detailObj
- };
-
- // App store builds cannot use crash reporter, so, return if that's the case
+ // App store builds cannot use crash reporter, so, exit if that's the case
if (process.platform === 'darwin' && process.mas) {
return
}
@@ -35,7 +22,26 @@ function setupCrashReporter(detailObj, crashReporterDetails) {
return;
}
+ // If the crash reporter info is empty, exit
+ if (!crashReporterDetails){
+ return
+ }
+
+ let crashReportInfo = crashReporterDetails;
+ crashReportInfo.extra = detailObj;
crashReporter.start(crashReportInfo);
+
+ crashDirectoryPath = crashReporter.getCrashesDirectory();
}
-exports.setupCrashReporter = setupCrashReporter;
\ No newline at end of file
+function setCrashReporterDetails(crashReporterInfo) {
+ crashReporterDetails = crashReporterInfo;
+}
+
+function getCrashDirectoryPath() {
+ return crashDirectoryPath;
+}
+
+exports.setupCrashReporter = setupCrashReporter;
+exports.setCrashReporterDetails = setCrashReporterDetails;
+exports.getCrashDirectoryPath = getCrashDirectoryPath;
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index c55431a3..2136fe03 100644
--- a/js/main.js
+++ b/js/main.js
@@ -220,12 +220,13 @@ function createWin(urlFromConfig) {
function initializeCrashReporter () {
getConfigField('crashReporterDetails').then(
function (data) {
- crashReporter.setupCrashReporter({'window': 'main'}, data);
+ crashReporter.setCrashReporterDetails(data);
+ crashReporter.setupCrashReporter({'window': 'main'});
}
).catch(function (err) {
let title = 'Error loading configuration';
electron.dialog.showErrorBox(title, title + ': ' + err);
- })
+ });
}
/**
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index 4b3d3eef..f5f6ce27 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -7,6 +7,7 @@ const isMac = require('../utils/misc.js').isMac;
const log = require('../log.js');
const logLevels = require('../enums/logLevels.js');
const eventEmitter = require('../eventEmitter');
+const crashReporter = require('../crashReporter');
let minimizeOnClose = false;
let launchOnStartup = false;
@@ -97,10 +98,30 @@ const template = [{
},
{
role: 'help',
- submenu: [{
- label: 'Learn More',
- click() { electron.shell.openExternal('https://www.symphony.com'); }
- }]
+ submenu: [
+ {
+ label: 'Learn More',
+ click() { electron.shell.openExternal('https://www.symphony.com'); }
+ },
+ {
+ label: 'Crash Directory Info',
+ click() {
+ electron.dialog.showMessageBox(null, {
+ type: 'info',
+ buttons: ['Copy', 'OK'],
+ defaultId: 0,
+ cancelId: 1,
+ noLink: true,
+ title: 'Crash Directory Path',
+ message: crashReporter.getCrashDirectoryPath()
+ }, response);
+ function response(buttonId) {
+ if (buttonId === 0) {
+ electron.clipboard.writeText(crashReporter.getCrashDirectoryPath());
+ }
+ }
+ }
+ }]
}
];
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index a3e61099..23b4ce73 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -54,14 +54,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
});
-// Setup the crash reporter
-let demoData = {
- "backendURL": "https://crash.symphony.com/",
- "sendCrashReports": true,
- "autoSubmit": true
-};
-crashReporter.setupCrashReporter({'window': 'preloadMain'}, demoData);
-
+crashReporter.setupCrashReporter({'window': 'preloadMain'});
createAPI();
// creates API exposed from electron.
diff --git a/js/windowMgr.js b/js/windowMgr.js
index 94a75116..f7790a99 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -93,18 +93,7 @@ function doCreateMainWindow(initialUrl, initialBounds) {
let url = initialUrl;
let key = getGuid();
- /**
- * Get crash info from global config and setup crash reporter.
- */
- getConfigField('crashReporterDetails').then(
- function (data) {
- crashReporter.setupCrashReporter({'window': 'main'}, data);
- }
- ).catch(function (err) {
- let title = 'Error loading configuration';
- electron.dialog.showErrorBox(title, title + ': ' + err);
- });
-
+ crashReporter.setupCrashReporter({'window': 'windowMgr'});
log.send(logLevels.INFO, 'creating main window url: ' + url);
let newWinOpts = {
From a1c2de3621f3ccb415d6ed59da73e6f5cf3474c3 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Fri, 15 Sep 2017 12:16:20 +0530
Subject: [PATCH 07/26] electron-17: supported opening crashes directory from
the menu
---
js/menus/menuTemplate.js | 23 ++++-------------------
1 file changed, 4 insertions(+), 19 deletions(-)
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index f5f6ce27..b8be4691 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -66,6 +66,10 @@ const template = [{
}
}
},
+ {
+ label: 'Open Crashes Directory',
+ click() { electron.shell.showItemInFolder(crashReporter.getCrashDirectoryPath()); }
+ },
{
type: 'separator'
},
@@ -102,25 +106,6 @@ const template = [{
{
label: 'Learn More',
click() { electron.shell.openExternal('https://www.symphony.com'); }
- },
- {
- label: 'Crash Directory Info',
- click() {
- electron.dialog.showMessageBox(null, {
- type: 'info',
- buttons: ['Copy', 'OK'],
- defaultId: 0,
- cancelId: 1,
- noLink: true,
- title: 'Crash Directory Path',
- message: crashReporter.getCrashDirectoryPath()
- }, response);
- function response(buttonId) {
- if (buttonId === 0) {
- electron.clipboard.writeText(crashReporter.getCrashDirectoryPath());
- }
- }
- }
}]
}
];
From 511d616e7496b5caf0a4684253a9affe24307b88 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Mon, 18 Sep 2017 21:17:45 +0530
Subject: [PATCH 08/26] electron-17: changed logic to use the electron crash
reporter directly in all the processes
---
js/main.js | 24 ++++--------------------
js/preload/preloadMain.js | 5 ++---
js/windowMgr.js | 6 +++---
3 files changed, 9 insertions(+), 26 deletions(-)
diff --git a/js/main.js b/js/main.js
index 2136fe03..8bd41664 100644
--- a/js/main.js
+++ b/js/main.js
@@ -3,6 +3,7 @@
// Third Party Dependencies
const electron = require('electron');
const app = electron.app;
+const crashReporter = electron.crashReporter;
const nodeURL = require('url');
const squirrelStartup = require('electron-squirrel-startup');
const AutoLaunch = require('auto-launch');
@@ -13,7 +14,6 @@ const {getConfigField, updateUserConfigWin, updateUserConfigMac} = require('./co
const { isMac, isDevEnv } = require('./utils/misc.js');
const protocolHandler = require('./protocolHandler');
const getCmdLineArg = require('./utils/getCmdLineArg.js');
-const crashReporter = require('./crashReporter');
require('electron-dl')();
@@ -32,6 +32,8 @@ require('./memoryMonitor.js');
const windowMgr = require('./windowMgr.js');
+crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'main'}});
+
// only allow a single instance of app.
const shouldQuit = app.makeSingleInstance((argv) => {
// Someone tried to run a second instance, we should focus our window.
@@ -214,21 +216,6 @@ function createWin(urlFromConfig) {
windowMgr.createMainWindow(url);
}
-/**
- * Get crash info from global config and setup crash reporter for Main Process.
- */
-function initializeCrashReporter () {
- getConfigField('crashReporterDetails').then(
- function (data) {
- crashReporter.setCrashReporterDetails(data);
- crashReporter.setupCrashReporter({'window': 'main'});
- }
- ).catch(function (err) {
- let title = 'Error loading configuration';
- electron.dialog.showErrorBox(title, title + ': ' + err);
- });
-}
-
/**
* processes protocol action for windows clients
* @param argv {Array} an array of command line arguments
@@ -269,7 +256,4 @@ function handleProtocolAction(uri) {
// app is already open, so, just trigger the protocol action method
protocolHandler.processProtocolAction(uri);
}
-}
-
-// Initialize the crash reporter
-initializeCrashReporter();
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 23b4ce73..c01d7675 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -11,14 +11,13 @@
// also to bring pieces of node.js:
// https://github.com/electron/electron/issues/2984
//
-const { ipcRenderer, remote } = require('electron');
+const { ipcRenderer, remote, crashReporter } = require('electron');
const throttle = require('../utils/throttle.js');
const apiEnums = require('../enums/api.js');
const apiCmds = apiEnums.cmds;
const apiName = apiEnums.apiName;
const getMediaSources = require('../desktopCapturer/getSources');
-const crashReporter = require('../crashReporter');
require('../downloadManager');
@@ -54,7 +53,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
});
-crashReporter.setupCrashReporter({'window': 'preloadMain'});
+crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'preload script / renderer'}});
createAPI();
// creates API exposed from electron.
diff --git a/js/windowMgr.js b/js/windowMgr.js
index f7790a99..19b5d80b 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -2,6 +2,7 @@
const electron = require('electron');
const app = electron.app;
+const crashReporter = electron.crashReporter;
const BrowserWindow = electron.BrowserWindow;
const path = require('path');
const nodeURL = require('url');
@@ -19,7 +20,6 @@ const eventEmitter = require('./eventEmitter');
const throttle = require('./utils/throttle.js');
const { getConfigField, updateConfigField } = require('./config.js');
const { isMac, isNodeEnv } = require('./utils/misc');
-const crashReporter = require('./crashReporter');
// show dialog when certificate errors occur
require('./dialogs/showCertError.js');
@@ -81,7 +81,7 @@ function createMainWindow(initialUrl) {
// failed, use default bounds
doCreateMainWindow(initialUrl, null);
}
- )
+ );
}
/**
@@ -93,7 +93,7 @@ function doCreateMainWindow(initialUrl, initialBounds) {
let url = initialUrl;
let key = getGuid();
- crashReporter.setupCrashReporter({'window': 'windowMgr'});
+ crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'renderer / window manager'}});
log.send(logLevels.INFO, 'creating main window url: ' + url);
let newWinOpts = {
From 01f1532fccad33841c4f377ca76e37a40a8095fd Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Mon, 18 Sep 2017 22:05:30 +0530
Subject: [PATCH 09/26] electron-17: fixed crashes directory menu templates
issue
---
js/menus/menuTemplate.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index b8be4691..7b7942eb 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -68,7 +68,7 @@ const template = [{
},
{
label: 'Open Crashes Directory',
- click() { electron.shell.showItemInFolder(crashReporter.getCrashDirectoryPath()); }
+ click() { electron.shell.showItemInFolder(electron.crashReporter.getCrashesDirectory()); }
},
{
type: 'separator'
From d4b30ba148800aeda50d7ecca405214175ffbb2f Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Mon, 18 Sep 2017 22:06:41 +0530
Subject: [PATCH 10/26] electron-17: removed unnecessary import
---
js/menus/menuTemplate.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index 7b7942eb..4773033d 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -7,7 +7,6 @@ const isMac = require('../utils/misc.js').isMac;
const log = require('../log.js');
const logLevels = require('../enums/logLevels.js');
const eventEmitter = require('../eventEmitter');
-const crashReporter = require('../crashReporter');
let minimizeOnClose = false;
let launchOnStartup = false;
From 08b58b51bb493e6e9927416a828ef0890c86f213 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Tue, 19 Sep 2017 11:56:11 +0530
Subject: [PATCH 11/26] electron-17: refactored code related to crash reporter
---
js/crashReporter/index.js | 47 ---------------------------------------
js/main.js | 2 +-
js/preload/preloadMain.js | 2 +-
js/windowMgr.js | 2 +-
4 files changed, 3 insertions(+), 50 deletions(-)
delete mode 100755 js/crashReporter/index.js
diff --git a/js/crashReporter/index.js b/js/crashReporter/index.js
deleted file mode 100755
index 786504a0..00000000
--- a/js/crashReporter/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-
-const {crashReporter} = require('electron');
-
-let crashReporterDetails;
-let crashDirectoryPath;
-
-/**
- * Setup the crash reporter with appropriate information
- * from the global config file
- * @param detailObj: An object to send extra parameters
- * via the crash reporter
- */
-function setupCrashReporter(detailObj) {
-
- // App store builds cannot use crash reporter, so, exit if that's the case
- if (process.platform === 'darwin' && process.mas) {
- return
- }
-
- if (process.type === 'renderer' && !(process.platform === 'darwin')) {
- return;
- }
-
- // If the crash reporter info is empty, exit
- if (!crashReporterDetails){
- return
- }
-
- let crashReportInfo = crashReporterDetails;
- crashReportInfo.extra = detailObj;
- crashReporter.start(crashReportInfo);
-
- crashDirectoryPath = crashReporter.getCrashesDirectory();
-}
-
-function setCrashReporterDetails(crashReporterInfo) {
- crashReporterDetails = crashReporterInfo;
-}
-
-function getCrashDirectoryPath() {
- return crashDirectoryPath;
-}
-
-exports.setupCrashReporter = setupCrashReporter;
-exports.setCrashReporterDetails = setCrashReporterDetails;
-exports.getCrashDirectoryPath = getCrashDirectoryPath;
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index 8bd41664..3812d038 100644
--- a/js/main.js
+++ b/js/main.js
@@ -32,7 +32,7 @@ require('./memoryMonitor.js');
const windowMgr = require('./windowMgr.js');
-crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'main'}});
+crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'main'}});
// only allow a single instance of app.
const shouldQuit = app.makeSingleInstance((argv) => {
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index c01d7675..24777aa8 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -53,7 +53,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
});
-crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'preload script / renderer'}});
+crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'preload script / renderer'}});
createAPI();
// creates API exposed from electron.
diff --git a/js/windowMgr.js b/js/windowMgr.js
index 19b5d80b..55e46f10 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -93,7 +93,7 @@ function doCreateMainWindow(initialUrl, initialBounds) {
let url = initialUrl;
let key = getGuid();
- crashReporter.start({companyName: 'Symphony', uploadToServer: false, submitURL: 'http://localhost:3000/', extra: {'process': 'renderer / window manager'}});
+ crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'renderer / window manager'}});
log.send(logLevels.INFO, 'creating main window url: ' + url);
let newWinOpts = {
From 605c725a08925e94aaf67d664ee3f41d69fa93d2 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Tue, 19 Sep 2017 12:04:57 +0530
Subject: [PATCH 12/26] electron-17: removed config that was not needed
---
config/Symphony.config | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/config/Symphony.config b/config/Symphony.config
index b3fb9d64..a114cf43 100644
--- a/config/Symphony.config
+++ b/config/Symphony.config
@@ -6,10 +6,5 @@
"notificationSettings": {
"position": "upper-right",
"display": ""
- },
- "crashReporterDetails": {
- "submitURL": "https://crash.symphony.com/",
- "uploadToServer": false,
- "companyName": "Symphony"
- }
+ }
}
\ No newline at end of file
From a647c0d3cde7b8a28c35509e6063835e53d35fff Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Mon, 25 Sep 2017 14:33:12 +0530
Subject: [PATCH 13/26] electron-17: added logic to check dev environment for
crashing the renderer process
---
js/preload/preloadMain.js | 6 ++++++
js/windowMgr.js | 4 +++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 24777aa8..c1394d71 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -112,8 +112,14 @@ function createAPI() {
/**
* Provides API to crash the renderer process that calls this function
+ * Is only used for demos.
*/
crashRendererProcess: function () {
+ // For practical purposes, we don't allow
+ // this method to work in non-dev environments
+ if (!process.env.ELECTRON_DEV) {
+ return;
+ }
process.crash();
},
diff --git a/js/windowMgr.js b/js/windowMgr.js
index e9239a63..4f1e0845 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -195,7 +195,9 @@ function doCreateMainWindow(initialUrl, initialBounds) {
if (index === 0) {
mainWindow.reload();
}
- else mainWindow.close();
+ else {
+ mainWindow.close();
+ }
});
});
From 40cf6b6d7335c91999e83aa6a546914f2aa318f2 Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Mon, 25 Sep 2017 16:10:03 +0530
Subject: [PATCH 14/26] electron-17: added an event to capture a renderer crash
for child windows and initialized the crash reporter there too.
---
js/main.js | 2 +-
js/preload/preloadMain.js | 2 +-
js/windowMgr.js | 22 +++++++++++++++++++++-
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/js/main.js b/js/main.js
index 3812d038..3fd8f093 100644
--- a/js/main.js
+++ b/js/main.js
@@ -32,7 +32,7 @@ require('./memoryMonitor.js');
const windowMgr = require('./windowMgr.js');
-crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'main'}});
+crashReporter.start({companyName: 'Symphony', submitURL: 'http://localhost:3000', uploadToServer: false, extra: {'process': 'main'}});
// only allow a single instance of app.
const shouldQuit = app.makeSingleInstance((argv) => {
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index c1394d71..9b325e32 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -53,7 +53,7 @@ const throttledSetBadgeCount = throttle(1000, function(count) {
});
});
-crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'preload script / renderer'}});
+crashReporter.start({companyName: 'Symphony', submitURL: 'http://localhost:3000', uploadToServer: false, extra: {'process': 'preload script / renderer'}});
createAPI();
// creates API exposed from electron.
diff --git a/js/windowMgr.js b/js/windowMgr.js
index 4f1e0845..205f7863 100644
--- a/js/windowMgr.js
+++ b/js/windowMgr.js
@@ -93,7 +93,7 @@ function doCreateMainWindow(initialUrl, initialBounds) {
let url = initialUrl;
let key = getGuid();
- crashReporter.start({companyName: 'Symphony', uploadToServer: false, extra: {'process': 'renderer / window manager'}});
+ crashReporter.start({companyName: 'Symphony', submitURL: 'http://localhost:3000', uploadToServer: false, extra: {'process': 'renderer / main window'}});
log.send(logLevels.INFO, 'creating main window url: ' + url);
let newWinOpts = {
@@ -336,6 +336,8 @@ function doCreateMainWindow(initialUrl, initialBounds) {
if (browserWin) {
log.send(logLevels.INFO, 'loaded pop-out window url: ' + newWinParsedUrl);
+ crashReporter.start({companyName: 'Symphony', submitURL: 'http://localhost:3000', uploadToServer: false, extra: {'process': 'renderer / pop out window - winKey -> ' + newWinKey}});
+
browserWin.winName = frameName;
browserWin.setAlwaysOnTop(alwaysOnTop);
@@ -345,6 +347,24 @@ function doCreateMainWindow(initialUrl, initialBounds) {
browserWin.removeListener('resize', throttledBoundsChange);
});
+ browserWin.webContents.on('crashed', function () {
+ const options = {
+ type: 'error',
+ title: 'Renderer Process Crashed',
+ message: 'Oops! Looks like we have had a crash. Please reload or close this window.',
+ buttons: ['Reload', 'Close']
+ };
+
+ electron.dialog.showMessageBox(options, function (index) {
+ if (index === 0) {
+ mainWindow.reload();
+ }
+ else {
+ mainWindow.close();
+ }
+ });
+ });
+
addWindowKey(newWinKey, browserWin);
// throttle changes so we don't flood client.
From ceae0aa7425f7b6318feb462713d7ea3c076508d Mon Sep 17 00:00:00 2001
From: Vikas Shashidhar
Date: Tue, 26 Sep 2017 12:54:04 +0530
Subject: [PATCH 15/26] Add tooltip to display full filename in download
manager.
---
js/downloadManager/index.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/js/downloadManager/index.js b/js/downloadManager/index.js
index bf7ac47e..b4b63538 100644
--- a/js/downloadManager/index.js
+++ b/js/downloadManager/index.js
@@ -109,6 +109,7 @@ function createDOM(arg) {
let h2FileName = document.createElement('h2');
h2FileName.classList.add('text-cutoff');
h2FileName.innerHTML = arg.fileName;
+ h2FileName.title = arg.fileName;
fileNameDiv.appendChild(h2FileName);
let fileProgressTitle = document.createElement('span');
From dfbcf464123819aa754be97b1b13906536e37981 Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Tue, 26 Sep 2017 16:10:53 +0530
Subject: [PATCH 16/26] Electron-142 - Added a new menu item to show
application version details
---
js/aboutApp/about-app.css | 39 ++++++++++++++++
js/aboutApp/about-app.html | 16 +++++++
js/aboutApp/index.js | 83 ++++++++++++++++++++++++++++++++++
js/aboutApp/renderer.js | 21 +++++++++
js/aboutApp/symphony-logo.png | Bin 0 -> 11066 bytes
js/menus/menuTemplate.js | 8 ++++
6 files changed, 167 insertions(+)
create mode 100644 js/aboutApp/about-app.css
create mode 100644 js/aboutApp/about-app.html
create mode 100644 js/aboutApp/index.js
create mode 100644 js/aboutApp/renderer.js
create mode 100644 js/aboutApp/symphony-logo.png
diff --git a/js/aboutApp/about-app.css b/js/aboutApp/about-app.css
new file mode 100644
index 00000000..3e137350
--- /dev/null
+++ b/js/aboutApp/about-app.css
@@ -0,0 +1,39 @@
+html, body {
+ margin: 0;
+ height: 100%;
+ font-family: sans-serif;
+}
+
+.content {
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ margin: 0 auto;
+ text-align: center;
+}
+
+.logo {
+ width: 100px;
+ height: 100px;
+}
+
+.name {
+ display: block;
+ font-size: 1.3em;
+ padding: 10px;
+ font-weight: bold;
+}
+
+.version-text {
+ display: block;
+ font-size: 1em;
+ color: #2f2f2f;
+}
+
+.copyright-text {
+ display: block;
+ padding: 10px;
+ font-size: 0.6em;
+ color: #7f7f7f;
+}
\ No newline at end of file
diff --git a/js/aboutApp/about-app.html b/js/aboutApp/about-app.html
new file mode 100644
index 00000000..ca455487
--- /dev/null
+++ b/js/aboutApp/about-app.html
@@ -0,0 +1,16 @@
+
+
+
+
+ About
+
+
+
+
+
+
Symphony
+
+
+
+
+
\ No newline at end of file
diff --git a/js/aboutApp/index.js b/js/aboutApp/index.js
new file mode 100644
index 00000000..5a000adc
--- /dev/null
+++ b/js/aboutApp/index.js
@@ -0,0 +1,83 @@
+'use strict';
+
+const electron = require('electron');
+const BrowserWindow = electron.BrowserWindow;
+const path = require('path');
+const fs = require('fs');
+const log = require('../log.js');
+const logLevels = require('../enums/logLevels.js');
+
+let aboutWindow;
+
+let windowConfig = {
+ width: 350,
+ height: 260,
+ show: false,
+ modal: true,
+ autoHideMenuBar: true,
+ titleBarStyle: true,
+ resizable: false,
+ webPreferences: {
+ preload: path.join(__dirname, 'renderer.js'),
+ sandbox: true,
+ nodeIntegration: false
+ }
+};
+
+/**
+ * method to get the HTML template path
+ * @returns {string}
+ */
+function getTemplatePath() {
+ let templatePath = path.join(__dirname, 'about-app.html');
+ try {
+ fs.statSync(templatePath).isFile();
+ } catch (err) {
+ log.send(logLevels.ERROR, 'about-window: Could not find template ("' + templatePath + '").');
+ }
+ return 'file://' + templatePath;
+}
+
+/**
+ * Opens the about application window for a specific window
+ * @param {String} windowName - name of the window upon
+ * which this window should show
+ */
+function openAboutWindow(windowName) {
+ let allWindows = BrowserWindow.getAllWindows();
+ allWindows = allWindows.find((window) => { return window.winName === windowName });
+
+ // if we couldn't find any window matching the window name
+ // it will render as a new window
+ if (allWindows) {
+ windowConfig.parent = allWindows;
+ }
+
+ aboutWindow = new BrowserWindow(windowConfig);
+ aboutWindow.setVisibleOnAllWorkspaces(true);
+ aboutWindow.loadURL(getTemplatePath());
+
+ aboutWindow.once('ready-to-show', () => {
+ aboutWindow.show();
+ });
+
+ aboutWindow.on('close', () => {
+ destroyWindow();
+ });
+
+ aboutWindow.on('closed', () => {
+ destroyWindow();
+ });
+}
+
+/**
+ * Destroys a window
+ */
+function destroyWindow() {
+ aboutWindow = null;
+}
+
+
+module.exports = {
+ openAboutWindow: openAboutWindow
+};
\ No newline at end of file
diff --git a/js/aboutApp/renderer.js b/js/aboutApp/renderer.js
new file mode 100644
index 00000000..4cfcaf6e
--- /dev/null
+++ b/js/aboutApp/renderer.js
@@ -0,0 +1,21 @@
+'use strict';
+const { remote } = require('electron');
+
+renderDom();
+
+/**
+ * Method that renders the data from user config
+ */
+function renderDom() {
+ document.addEventListener('DOMContentLoaded', function () {
+ const applicationName = remote.app.getName() || 'Symphony';
+ const version = remote.app.getVersion();
+ let appName = document.getElementById('app-name');
+ let versionText = document.getElementById('version');
+ let copyright = document.getElementById('copyright');
+
+ appName.innerHTML = applicationName;
+ versionText.innerHTML = version ? `Version ${version} (${version})` : null;
+ copyright.innerHTML = `Copyright © ${new Date().getFullYear()} ${applicationName}`
+ });
+}
\ No newline at end of file
diff --git a/js/aboutApp/symphony-logo.png b/js/aboutApp/symphony-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..36c0f63a1bc043b42a993c6f8a42f01933591a8d
GIT binary patch
literal 11066
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
A#sB~S
literal 0
HcmV?d00001
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index 4b3d3eef..f9a18317 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -7,6 +7,7 @@ const isMac = require('../utils/misc.js').isMac;
const log = require('../log.js');
const logLevels = require('../enums/logLevels.js');
const eventEmitter = require('../eventEmitter');
+const aboutApp = require('../aboutApp');
let minimizeOnClose = false;
let launchOnStartup = false;
@@ -100,6 +101,13 @@ const template = [{
submenu: [{
label: 'Learn More',
click() { electron.shell.openExternal('https://www.symphony.com'); }
+ },
+ {
+ label: 'App Version',
+ click(focusedWindow){
+ let windowName = focusedWindow ? focusedWindow.name : '';
+ aboutApp.openAboutWindow(windowName);
+ }
}]
}
];
From c778a1f7b7d93bdd41b6180d042908defa5adee5 Mon Sep 17 00:00:00 2001
From: Vikas Shashidhar
Date: Tue, 26 Sep 2017 16:54:57 +0530
Subject: [PATCH 17/26] Change title to reflect new file display name as per
Electron-144
---
js/downloadManager/index.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/js/downloadManager/index.js b/js/downloadManager/index.js
index b4b63538..058e4e83 100644
--- a/js/downloadManager/index.js
+++ b/js/downloadManager/index.js
@@ -108,8 +108,8 @@ function createDOM(arg) {
let h2FileName = document.createElement('h2');
h2FileName.classList.add('text-cutoff');
- h2FileName.innerHTML = arg.fileName;
- h2FileName.title = arg.fileName;
+ h2FileName.innerHTML = arg.fileDisplayName;
+ h2FileName.title = arg.fileDisplayName;
fileNameDiv.appendChild(h2FileName);
let fileProgressTitle = document.createElement('span');
From 80a7460f47b80b9f1b4b773da1add1a44633d74e Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Tue, 26 Sep 2017 21:34:25 +0530
Subject: [PATCH 18/26] Updated comment
---
js/aboutApp/renderer.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/js/aboutApp/renderer.js b/js/aboutApp/renderer.js
index 4cfcaf6e..808c4337 100644
--- a/js/aboutApp/renderer.js
+++ b/js/aboutApp/renderer.js
@@ -4,7 +4,7 @@ const { remote } = require('electron');
renderDom();
/**
- * Method that renders the data from user config
+ * Method that renders application data
*/
function renderDom() {
document.addEventListener('DOMContentLoaded', function () {
@@ -18,4 +18,4 @@ function renderDom() {
versionText.innerHTML = version ? `Version ${version} (${version})` : null;
copyright.innerHTML = `Copyright © ${new Date().getFullYear()} ${applicationName}`
});
-}
\ No newline at end of file
+}
From 6d0d5145af3fbad9c7d1c40c25a7f0f894a0e59a Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Tue, 26 Sep 2017 23:26:11 +0530
Subject: [PATCH 19/26] electron-17: added logic to open the completed
directory under the crashes directory
---
js/menus/menuTemplate.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index 4773033d..dd0bb460 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -66,8 +66,11 @@ const template = [{
}
},
{
- label: 'Open Crashes Directory',
- click() { electron.shell.showItemInFolder(electron.crashReporter.getCrashesDirectory()); }
+ label: 'Open Crashes Directory',
+ click() {
+ const crashesDirectory = electron.crashReporter.getCrashesDirectory() + '/completed';
+ electron.shell.showItemInFolder(crashesDirectory);
+ }
},
{
type: 'separator'
From c996c5284925b287c2c670ec234b94c7a07c36f8 Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Wed, 27 Sep 2017 11:11:31 +0530
Subject: [PATCH 20/26] Electron-142 - Made changes as per review
---
js/aboutApp/about-app.css | 39 ----------------------------------
js/aboutApp/about-app.html | 15 ++++++-------
js/aboutApp/symphony-logo.png | Bin 11066 -> 5191 bytes
js/menus/menuTemplate.js | 15 +++++++------
4 files changed, 15 insertions(+), 54 deletions(-)
delete mode 100644 js/aboutApp/about-app.css
diff --git a/js/aboutApp/about-app.css b/js/aboutApp/about-app.css
deleted file mode 100644
index 3e137350..00000000
--- a/js/aboutApp/about-app.css
+++ /dev/null
@@ -1,39 +0,0 @@
-html, body {
- margin: 0;
- height: 100%;
- font-family: sans-serif;
-}
-
-.content {
- left: 50%;
- position: absolute;
- top: 50%;
- transform: translate(-50%, -50%);
- margin: 0 auto;
- text-align: center;
-}
-
-.logo {
- width: 100px;
- height: 100px;
-}
-
-.name {
- display: block;
- font-size: 1.3em;
- padding: 10px;
- font-weight: bold;
-}
-
-.version-text {
- display: block;
- font-size: 1em;
- color: #2f2f2f;
-}
-
-.copyright-text {
- display: block;
- padding: 10px;
- font-size: 0.6em;
- color: #7f7f7f;
-}
\ No newline at end of file
diff --git a/js/aboutApp/about-app.html b/js/aboutApp/about-app.html
index ca455487..1ca91a10 100644
--- a/js/aboutApp/about-app.html
+++ b/js/aboutApp/about-app.html
@@ -1,16 +1,15 @@
-
+
About
-
-
-
-
-
Symphony
-
-
+
+
+
+
Symphony
+
+
\ No newline at end of file
diff --git a/js/aboutApp/symphony-logo.png b/js/aboutApp/symphony-logo.png
index 36c0f63a1bc043b42a993c6f8a42f01933591a8d..f1b41d9e74574e616be9a4270cc27803cd750e0e 100644
GIT binary patch
literal 5191
zcmV-N6u9e&P)
1d;HVOUsI4C
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
Bxk&&3
literal 11066
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
A#sB~S
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index f9a18317..5379f880 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -101,13 +101,6 @@ const template = [{
submenu: [{
label: 'Learn More',
click() { electron.shell.openExternal('https://www.symphony.com'); }
- },
- {
- label: 'App Version',
- click(focusedWindow){
- let windowName = focusedWindow ? focusedWindow.name : '';
- aboutApp.openAboutWindow(windowName);
- }
}]
}
];
@@ -246,6 +239,14 @@ function getTemplate(app) {
app.quit();
}
});
+
+ template[3].submenu.push({
+ label: 'About Symphony',
+ click(focusedWindow) {
+ let windowName = focusedWindow ? focusedWindow.name : '';
+ aboutApp.openAboutWindow(windowName);
+ }
+ });
}
return template;
From 7130883c7471600536ce8761dee1afe6bca5dc45 Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Wed, 27 Sep 2017 11:13:50 +0530
Subject: [PATCH 21/26] Electron-142 - Made changes as per review
---
js/aboutApp/about-app.html | 2 +-
js/menus/menuTemplate.js | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/js/aboutApp/about-app.html b/js/aboutApp/about-app.html
index 1ca91a10..8cbdbc39 100644
--- a/js/aboutApp/about-app.html
+++ b/js/aboutApp/about-app.html
@@ -1,5 +1,5 @@
-
+
About
diff --git a/js/menus/menuTemplate.js b/js/menus/menuTemplate.js
index 5379f880..94cfca5a 100644
--- a/js/menus/menuTemplate.js
+++ b/js/menus/menuTemplate.js
@@ -240,6 +240,7 @@ function getTemplate(app) {
}
});
+ // This adds About Symphony under help menu for windows
template[3].submenu.push({
label: 'About Symphony',
click(focusedWindow) {
From 99ea90db025c916dfeda40191ec0c4bcfd7dd1ee Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Wed, 27 Sep 2017 11:21:22 +0530
Subject: [PATCH 22/26] Updated window title
---
js/aboutApp/about-app.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/js/aboutApp/about-app.html b/js/aboutApp/about-app.html
index 8cbdbc39..75cb6b51 100644
--- a/js/aboutApp/about-app.html
+++ b/js/aboutApp/about-app.html
@@ -2,7 +2,7 @@
- About
+ About Symphony
@@ -12,4 +12,4 @@
-
\ No newline at end of file
+
From 7985b68dfd5b00e3683729edd2a10a1fa7621f1c Mon Sep 17 00:00:00 2001
From: Vishwas Shashidhar
Date: Wed, 27 Sep 2017 19:46:02 +0530
Subject: [PATCH 23/26] electron-158: added logic to disable spellchecker
---
js/preload/preloadMain.js | 31 +++++++++++++++++++------------
package.json | 3 +--
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js
index 9b325e32..3f248d1b 100644
--- a/js/preload/preloadMain.js
+++ b/js/preload/preloadMain.js
@@ -26,20 +26,27 @@ require('../downloadManager');
// so loading the spellchecker in try catch so that we don't
// block other method from loading
document.addEventListener('DOMContentLoaded', () => {
- try {
- /* eslint-disable global-require */
- const SpellCheckerHelper = require('../spellChecker').SpellCheckHelper;
- /* eslint-enable global-require */
- // Method to initialize spell checker
- const spellChecker = new SpellCheckerHelper();
- spellChecker.initializeSpellChecker();
- } catch (err) {
- /* eslint-disable no-console */
- console.error('unable to load the spell checker module, hence, skipping the spell check feature ' + err);
- /* eslint-enable no-console */
- }
+ //loadSpellChecker();
});
+/**
+ * Loads up the spell checker module
+ */
+// function loadSpellChecker() {
+// try {
+// /* eslint-disable global-require */
+// const SpellCheckerHelper = require('../spellChecker').SpellCheckHelper;
+// /* eslint-enable global-require */
+// // Method to initialize spell checker
+// const spellChecker = new SpellCheckerHelper();
+// spellChecker.initializeSpellChecker();
+// } catch (err) {
+// /* eslint-disable no-console */
+// console.error('unable to load the spell checker module, hence, skipping the spell check feature ' + err);
+// /* eslint-enable no-console */
+// }
+// }
+
// hold ref so doesn't get GC'ed
const local = {
ipcRenderer: ipcRenderer
diff --git a/package.json b/package.json
index c7d89f7e..23209abb 100644
--- a/package.json
+++ b/package.json
@@ -98,8 +98,7 @@
"async.mapseries": "^0.5.2",
"auto-launch": "^5.0.1",
"electron-dl": "^1.9.0",
- "electron-log": "^2.2.7",
- "electron-spellchecker": "^1.2.0",
+ "electron-log": "^2.2.7",
"electron-squirrel-startup": "^1.0.0",
"filesize": "^3.5.10",
"keymirror": "0.1.1",
From ad5d762c20300be329bae405fd68257bd2dd08f3 Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Wed, 27 Sep 2017 21:18:13 +0530
Subject: [PATCH 24/26] Electron-142 - Moved inline styles to style tag
---
js/aboutApp/about-app.html | 49 +++++++++++++++++++++++++++++++++-----
1 file changed, 43 insertions(+), 6 deletions(-)
diff --git a/js/aboutApp/about-app.html b/js/aboutApp/about-app.html
index 75cb6b51..1ed09910 100644
--- a/js/aboutApp/about-app.html
+++ b/js/aboutApp/about-app.html
@@ -3,13 +3,50 @@
About Symphony
+
-
-
-
-
Symphony
-
-
+
+
+
+
Symphony
+
+
From 77b62c643039baec91c3df2e2861db4b138bc9bb Mon Sep 17 00:00:00 2001
From: Kiran Niranjan
Date: Thu, 28 Sep 2017 10:55:19 +0530
Subject: [PATCH 25/26] Electron-142 - Changed the symphony logo
---
js/aboutApp/symphony-logo.png | Bin 5191 -> 5209 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/js/aboutApp/symphony-logo.png b/js/aboutApp/symphony-logo.png
index f1b41d9e74574e616be9a4270cc27803cd750e0e..749cf2fc0157b59867768d3a17855b897a733624 100644
GIT binary patch
delta 5183
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
delta 5165
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
b{{
Date: Thu, 28 Sep 2017 18:42:47 +0530
Subject: [PATCH 26/26] electron-145: fixes the issue with invalid json config
upon repair
---
installer/win/Symphony-x64.aip | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/installer/win/Symphony-x64.aip b/installer/win/Symphony-x64.aip
index 324f3b21..68263679 100644
--- a/installer/win/Symphony-x64.aip
+++ b/installer/win/Symphony-x64.aip
@@ -272,6 +272,9 @@
+
+
+
@@ -298,6 +301,10 @@
+
+
+
+
@@ -305,6 +312,7 @@
+
@@ -451,11 +459,18 @@
+
+
+
+
+
+
+
@@ -488,7 +503,7 @@
-
+
@@ -500,6 +515,9 @@
+
+
+
@@ -562,4 +580,4 @@
-
\ No newline at end of file
+