diff --git a/installer/win/Symphony-x64.aip b/installer/win/Symphony-x64.aip
index 65bf9d4f..c023785a 100644
--- a/installer/win/Symphony-x64.aip
+++ b/installer/win/Symphony-x64.aip
@@ -596,7 +596,7 @@
-
+
diff --git a/installer/win/Symphony-x86.aip b/installer/win/Symphony-x86.aip
index 23026ec7..5878e5a9 100644
--- a/installer/win/Symphony-x86.aip
+++ b/installer/win/Symphony-x86.aip
@@ -578,7 +578,7 @@
-
+
diff --git a/js/config.js b/js/config.js
index 483d8192..d445ce41 100644
--- a/js/config.js
+++ b/js/config.js
@@ -13,6 +13,7 @@ const isMac = require('./utils/misc.js').isMac;
const getRegistry = require('./utils/getRegistry.js');
const log = require('./log.js');
const logLevels = require('./enums/logLevels.js');
+const { buildNumber } = require('../package.json');
const configFileName = 'Symphony.config';
@@ -191,10 +192,10 @@ function updateConfigField(fieldName, newValue) {
return saveUserConfig(fieldName, newValue, config);
}, () => {
// in case config doesn't exist, can't read or is corrupted.
- // add configVersion - just in case in future we need to provide
+ // add configBuildNumber - just in case in future we need to provide
// upgrade capabilities.
return saveUserConfig(fieldName, newValue, {
- configVersion: app.getVersion().toString(),
+ configBuildNumber: buildNumber || '0',
});
});
}
@@ -265,6 +266,7 @@ function updateUserConfig(oldUserConfig) {
reject(new Error(`Failed to update user config error: ${err}`));
return;
}
+ userConfig = newUserConfig;
resolve();
});
});
@@ -275,28 +277,22 @@ function updateUserConfig(oldUserConfig) {
* Manipulates user config on first time launch
* @returns {Promise}
*/
-function updateUserConfigOnLaunch() {
+function updateUserConfigOnLaunch(resolve, reject) {
// we get the user config path using electron
const userConfigFile = path.join(app.getPath('userData'), configFileName);
- // if it's not a per user installation or if the
- // user config file doesn't exist, we simple move on
- if (!fs.existsSync(userConfigFile)) {
- log.send(logLevels.WARN, 'config: Could not find the user config file!');
- return Promise.reject(new Error('config: Could not find the user config file!'));
- }
-
// In case the file exists, we remove it so that all the
// values are fetched from the global config
// https://perzoinc.atlassian.net/browse/ELECTRON-126
return readUserConfig(userConfigFile).then((data) => {
- // Add version info to the user config data
- const version = app.getVersion().toString() || '1.0.0';
- const updatedData = Object.assign(data || {}, { configVersion: version });
+ // Add build number info to the user config data
+ const updatedData = Object.assign(data || {}, { configBuildNumber: buildNumber || '0' });
- return updateUserConfig(updatedData);
+ updateUserConfig(updatedData)
+ .then(resolve)
+ .catch(reject);
}).catch((err) => {
- return Promise.reject(err);
+ return reject(err);
});
}
diff --git a/js/main.js b/js/main.js
index 3cb711d0..ebb8e269 100644
--- a/js/main.js
+++ b/js/main.js
@@ -24,7 +24,6 @@ const { setCheckboxValues } = require('./menus/menuTemplate.js');
const autoLaunch = require('./autoLaunch');
const { handleCacheFailureCheckOnStartup, handleCacheFailureCheckOnExit} = require('./cacheHandler');
-const compareSemVersions = require('./utils/compareSemVersions.js');
const { isMac, isDevEnv } = require('./utils/misc.js');
const getCmdLineArg = require('./utils/getCmdLineArg.js');
@@ -313,24 +312,24 @@ function setupThenOpenMainWindow() {
}
function checkFirstTimeLaunch() {
- return getUserConfigField('configVersion')
- .then((configVersion) => {
- const appVersionString = app.getVersion().toString();
- const execPath = nodePath.dirname(app.getPath('exe'));
- const shouldUpdateUserConfig = execPath.indexOf('AppData\\Local\\Programs') !== -1 || isMac;
+ return new Promise((resolve, reject) => {
+ getUserConfigField('configBuildNumber')
+ .then((configBuildNumber) => {
+ const execPath = nodePath.dirname(app.getPath('exe'));
+ const shouldUpdateUserConfig = execPath.indexOf('AppData\\Local\\Programs') !== -1 || isMac;
- if (!(configVersion
- && typeof configVersion === 'string'
- && (compareSemVersions.check(appVersionString, configVersion) !== 1)) && shouldUpdateUserConfig) {
- return setupFirstTimeLaunch();
- }
- log.send(logLevels.INFO, `not a first-time launch as
- configVersion: ${configVersion} appVersion: ${appVersionString} shouldUpdateUserConfig: ${shouldUpdateUserConfig}`);
- return Promise.resolve();
- })
- .catch(() => {
- return setupFirstTimeLaunch();
- });
+ if (configBuildNumber && typeof configBuildNumber === 'string' && configBuildNumber !== buildNumber) {
+ return setupFirstTimeLaunch(resolve, reject, shouldUpdateUserConfig);
+ }
+ log.send(logLevels.INFO, `not a first-time launch as
+ configBuildNumber: ${configBuildNumber} installerBuildNumber: ${buildNumber} shouldUpdateUserConfig: ${shouldUpdateUserConfig}`);
+ return resolve();
+ })
+ .catch((e) => {
+ log.send(logLevels.ERROR, `Error reading configVersion error: ${e}`);
+ return setupFirstTimeLaunch(resolve, reject, true);
+ });
+ });
}
/**
@@ -339,11 +338,18 @@ function checkFirstTimeLaunch() {
*
* @return {Promise}
*/
-function setupFirstTimeLaunch() {
+function setupFirstTimeLaunch(resolve, reject, shouldUpdateUserConfig) {
log.send(logLevels.INFO, 'setting first time launch config');
- return getConfigField('launchOnStartup')
+ getConfigField('launchOnStartup')
.then(setStartup)
- .then(updateUserConfigOnLaunch);
+ .then(() => {
+ if (shouldUpdateUserConfig) {
+ log.send(logLevels.INFO, `Resetting user config data? ${shouldUpdateUserConfig}`);
+ return updateUserConfigOnLaunch(resolve, reject);
+ }
+ return resolve();
+ })
+ .catch(reject);
}
/**
diff --git a/js/screenSnippet/index.js b/js/screenSnippet/index.js
index 4e3441e1..2dde01ac 100644
--- a/js/screenSnippet/index.js
+++ b/js/screenSnippet/index.js
@@ -7,7 +7,7 @@ const fs = require('fs');
const os = require('os');
const path = require('path');
-const { isMac, isDevEnv } = require('../utils/misc.js');
+const { isMac, isDevEnv, isWindowsOS } = require('../utils/misc.js');
const log = require('../log.js');
const logLevels = require('../enums/logLevels.js');
const eventEmitter = require('.././eventEmitter');
@@ -41,7 +41,7 @@ class ScreenSnippet {
log.send(logLevels.INFO, 'ScreenSnippet: starting screen capture');
- let tmpFilename = 'symphonyImage-' + Date.now() + '.jpg';
+ let tmpFilename = (isWindowsOS) ? 'symphonyImage-' + Date.now() + '.png' : 'symphonyImage-' + Date.now() + '.jpg';
let tmpDir = os.tmpdir();
let outputFileName = path.join(tmpDir, tmpFilename);
@@ -144,10 +144,11 @@ function readResult(outputFileName, resolve, reject, childProcessErr) {
try {
// convert binary data to base64 encoded string
let output = Buffer.from(data).toString('base64');
- resolve({
- type: 'image/jpg;base64',
+ const resultOutput = {
+ type: isWindowsOS ? 'image/png;base64' : 'image/jpg;base64',
data: output
- });
+ };
+ resolve(resultOutput);
} catch (error) {
reject(createError(error));
} finally {