From a0ab0255d69d16aedabbedda82714de7f9636495 Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Wed, 14 Mar 2018 23:33:18 +0900 Subject: [PATCH 1/2] Make sure SpellCheker.getSpellCheckerLocale() returns correct locale --- test/specs/spellchecker_test.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/specs/spellchecker_test.js b/test/specs/spellchecker_test.js index b9ecc401..53f46c1a 100644 --- a/test/specs/spellchecker_test.js +++ b/test/specs/spellchecker_test.js @@ -3,6 +3,28 @@ const path = require('path'); const SpellChecker = require('../../src/main/SpellChecker'); describe('main/Spellchecker.js', function() { + describe('getSpellCheckerLocale()', () => { + it('should return recognized locale', () => { + SpellChecker.getSpellCheckerLocale('en').should.equal('en-US'); + SpellChecker.getSpellCheckerLocale('en-US').should.equal('en-US'); + + SpellChecker.getSpellCheckerLocale('fr').should.equal('fr-FR'); + SpellChecker.getSpellCheckerLocale('fr-FR').should.equal('fr-FR'); + + SpellChecker.getSpellCheckerLocale('de').should.equal('de-DE'); + SpellChecker.getSpellCheckerLocale('de-DE').should.equal('de-DE'); + + SpellChecker.getSpellCheckerLocale('es').should.equal('es-ES'); + SpellChecker.getSpellCheckerLocale('es-ES').should.equal('es-ES'); + + SpellChecker.getSpellCheckerLocale('nl').should.equal('nl-NL'); + SpellChecker.getSpellCheckerLocale('nl-NL').should.equal('nl-NL'); + + SpellChecker.getSpellCheckerLocale('ja').should.equal('en-US'); + SpellChecker.getSpellCheckerLocale('ja-JP').should.equal('en-US'); + }); + }); + describe('en-US', function() { let spellchecker = null; From bacf11e681ade81db0ad99df3d1ae136a9011cc9 Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Wed, 14 Mar 2018 23:54:21 +0900 Subject: [PATCH 2/2] Fix correct spellchecker locale not selected for non en-US locales app.getLocale() should be called after app.on('init') event. spellCheckerLocale is removed from defaultPreferences.js --- src/common/config/defaultPreferences.js | 1 - src/common/settings.js | 7 ++----- src/main.js | 9 +++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/common/config/defaultPreferences.js b/src/common/config/defaultPreferences.js index 51c16a89..4cd63e42 100644 --- a/src/common/config/defaultPreferences.js +++ b/src/common/config/defaultPreferences.js @@ -15,7 +15,6 @@ const defaultPreferences = { }, showUnreadBadge: true, useSpellChecker: true, - spellCheckerLocale: 'en-US', }; module.exports = defaultPreferences; diff --git a/src/common/settings.js b/src/common/settings.js index 6e744876..28cf7785 100644 --- a/src/common/settings.js +++ b/src/common/settings.js @@ -12,11 +12,8 @@ function merge(base, target) { const defaultPreferences = require('./config/defaultPreferences'); const upgradePreferences = require('./config/upgradePreferences'); -function loadDefault(spellCheckerLocale) { - const config = JSON.parse(JSON.stringify(defaultPreferences)); - return Object.assign({}, config, { - spellCheckerLocale: spellCheckerLocale || defaultPreferences.spellCheckerLocale || 'en-US', - }); +function loadDefault() { + return JSON.parse(JSON.stringify(defaultPreferences)); } function hasBuildConfigDefaultTeams(config) { diff --git a/src/main.js b/src/main.js index 997d6696..950ba494 100644 --- a/src/main.js +++ b/src/main.js @@ -79,8 +79,7 @@ try { settings.writeFileSync(configFile, config); } } catch (e) { - const spellCheckerLocale = SpellChecker.getSpellCheckerLocale(app.getLocale()); - config = settings.loadDefault(null, spellCheckerLocale); + config = settings.loadDefault(); console.log('Failed to read or upgrade config.json', e); if (!config.teams.length && config.defaultTeam) { config.teams.push(config.defaultTeam); @@ -386,6 +385,12 @@ app.on('ready', () => { return; } + if (!config.spellCheckerLocale) { + config.spellCheckerLocale = SpellChecker.getSpellCheckerLocale(app.getLocale()); + const configFile = app.getPath('userData') + '/config.json'; + settings.writeFileSync(configFile, config); + } + const appStateJson = path.join(app.getPath('userData'), 'app-state.json'); appState = new AppStateManager(appStateJson); if (wasUpdated(appState.lastAppVersion)) {