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 {