diff --git a/src/common/settings.js b/src/common/settings.js index dbc9cf21..67878da5 100644 --- a/src/common/settings.js +++ b/src/common/settings.js @@ -1,6 +1,8 @@ 'use strict'; const fs = require('fs'); + +const path = require('path'); let deepmerge = require('deepmerge').default; if (process.env.TEST) { deepmerge = require('deepmerge'); // eslint-disable-line @@ -14,7 +16,7 @@ function merge(base, target) { return Object.assign({}, base, target); } -function deepMergeArray(dest) { +function deepMergeArray(source, dest) { return dest; } @@ -27,7 +29,7 @@ function loadDefault(version, spellCheckerLocale) { const base = baseConfig[ver] || baseConfig.default; const override = overrideConfig[ver] || {}; - const defaults = deepmerge(base, override, {clone: true, arrayMerge: deepMergeArray}); + const defaults = deepmerge(base, override, {arrayMerge: deepMergeArray}); return Object.assign(defaults, { spellCheckerLocale: spellCheckerLocale || defaults.spellCheckerLocale || 'en-US' @@ -87,6 +89,12 @@ module.exports = { if (config.version != settingsVersion) { // eslint-disable-line throw new Error('version ' + config.version + ' is not equal to ' + settingsVersion); } + + const dir = path.dirname(configFile); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); + } + var data = JSON.stringify(config, null, ' '); fs.writeFileSync(configFile, data, 'utf8'); }, diff --git a/src/main.js b/src/main.js index 319e0059..65d3d31e 100644 --- a/src/main.js +++ b/src/main.js @@ -71,6 +71,12 @@ try { const spellCheckerLocale = SpellChecker.getSpellCheckerLocale(app.getLocale()); config = settings.loadDefault(null, spellCheckerLocale); console.log('Failed to read or upgrade config.json', e); + if (!config.teams.length && config.defaultTeam) { + config.teams.push(config.defaultTeam); + + const configFile = app.getPath('userData') + '/config.json'; + settings.writeFileSync(configFile, config); + } } ipcMain.on('update-config', () => {