From 501b2acecaec8524a9e94aa180ba9a798a2d7a13 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Fri, 26 Mar 2021 00:48:20 +0900 Subject: [PATCH] refs #2128 Add spellchecker languages preference form --- .../store/Preferences/Language.spec.ts | 6 +++-- .../unit/store/Preferences/Language.spec.ts | 3 ++- src/config/locales/en/translation.json | 2 +- src/main/index.ts | 12 ++++++++++ src/main/preferences.ts | 3 ++- .../components/Preferences/Language.vue | 22 ++++++++++++++++++- src/renderer/store/Preferences/Language.ts | 14 ++++++++++-- src/types/language.ts | 1 + 8 files changed, 55 insertions(+), 8 deletions(-) diff --git a/spec/renderer/integration/store/Preferences/Language.spec.ts b/spec/renderer/integration/store/Preferences/Language.spec.ts index b24c2bfb..bb96d1bd 100644 --- a/spec/renderer/integration/store/Preferences/Language.spec.ts +++ b/spec/renderer/integration/store/Preferences/Language.spec.ts @@ -11,7 +11,8 @@ const state = (): LanguageState => { language: { language: DefaultLanguage.en.key, spellchecker: { - enabled: true + enabled: true, + languages: [] } } } @@ -47,7 +48,8 @@ describe('Preferences/Language', () => { language: { language: DefaultLanguage.ja.key, spellchecker: { - enabled: true + enabled: true, + languages: [] } } } diff --git a/spec/renderer/unit/store/Preferences/Language.spec.ts b/spec/renderer/unit/store/Preferences/Language.spec.ts index 8953857f..05fcd895 100644 --- a/spec/renderer/unit/store/Preferences/Language.spec.ts +++ b/spec/renderer/unit/store/Preferences/Language.spec.ts @@ -8,7 +8,8 @@ describe('Preferences/Language', () => { language: { language: DefaultLanguage.en.key, spellchecker: { - enabled: true + enabled: true, + languages: [] } } } diff --git a/src/config/locales/en/translation.json b/src/config/locales/en/translation.json index b6ab09af..46e73d5e 100644 --- a/src/config/locales/en/translation.json +++ b/src/config/locales/en/translation.json @@ -229,7 +229,7 @@ }, "language": { "title": "Language", - "notice": "Requires relaunch", + "notice": "These settings will take effect after a relaunch", "confirm": { "title": "Confirm", "message": "You have to restart this application. Continue?", diff --git a/src/main/index.ts b/src/main/index.ts index 0536112e..41ae4360 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1033,6 +1033,18 @@ ipcMain.handle('toggle-spellchecker', async (_: IpcMainInvokeEvent, value: boole return conf.language.spellchecker.enabled }) +ipcMain.handle('update-spellchecker-languages', async (_: IpcMainInvokeEvent, languages: Array) => { + const preferences = new Preferences(preferencesDBPath) + const conf = await preferences.update({ + language: { + spellchecker: { + languages: languages + } + } + }) + return conf.language.spellchecker.languages +}) + // hashtag ipcMain.handle('save-hashtag', async (_: IpcMainInvokeEvent, tag: string) => { const hashtags = new Hashtags(hashtagsDB) diff --git a/src/main/preferences.ts b/src/main/preferences.ts index a5d315ec..87afa82d 100644 --- a/src/main/preferences.ts +++ b/src/main/preferences.ts @@ -56,7 +56,8 @@ const notify: Notify = { const language: LanguageSet = { language: Language.en.key, spellchecker: { - enabled: true + enabled: true, + languages: [Language.en.key] } } diff --git a/src/renderer/components/Preferences/Language.vue b/src/renderer/components/Preferences/Language.vue index 45986c8d..8c65ba6d 100644 --- a/src/renderer/components/Preferences/Language.vue +++ b/src/renderer/components/Preferences/Language.vue @@ -10,10 +10,22 @@

{{ $t('preferences.language.notice') }}

- +

{{ $t('preferences.language.spellchecker.title') }}

+ + + + {{ language.name }} +

{{ $t('preferences.language.notice') }}

@@ -68,6 +80,14 @@ export default { this.confirm() }) } + }, + spellcheckLanguages: { + get() { + return this.$store.state.Preferences.Language.language.spellchecker.languages + }, + set(value) { + this.$store.dispatch('Preferences/Language/updateSpellcheckerLanguages', value) + } } }, created() { diff --git a/src/renderer/store/Preferences/Language.ts b/src/renderer/store/Preferences/Language.ts index 1d1c7d1d..96ba15f9 100644 --- a/src/renderer/store/Preferences/Language.ts +++ b/src/renderer/store/Preferences/Language.ts @@ -15,7 +15,8 @@ const state: LanguageState = { language: { language: Language.en.key, spellchecker: { - enabled: true + enabled: true, + languages: [Language.en.key] } } } @@ -23,7 +24,8 @@ const state: LanguageState = { export const MUTATION_TYPES = { UPDATE_LANGUAGE: 'updateLanguage', CHANGE_LANGUAGE: 'changeLanguage', - TOGGLE_SPELLCHECKER: 'toggleSpellchecker' + TOGGLE_SPELLCHECKER: 'toggleSpellchecker', + UPDATE_SPELLCHECKER_LANGUAGES: 'updateSpellcheckerLanguages' } const mutations: MutationTree = { @@ -35,6 +37,9 @@ const mutations: MutationTree = { }, [MUTATION_TYPES.TOGGLE_SPELLCHECKER]: (state, enabled: boolean) => { state.language.spellchecker.enabled = enabled + }, + [MUTATION_TYPES.UPDATE_SPELLCHECKER_LANGUAGES]: (state, languages: Array) => { + state.language.spellchecker.languages = languages } } @@ -54,6 +59,11 @@ const actions: ActionTree = { commit(MUTATION_TYPES.TOGGLE_SPELLCHECKER, value) return value }, + updateSpellcheckerLanguages: async ({ commit }, languages: Array) => { + const langs: Array = await win.ipcRenderer.invoke('update-spellchecker-languages', languages) + commit(MUTATION_TYPES.UPDATE_SPELLCHECKER_LANGUAGES, langs) + return langs + }, relaunch: () => { win.ipcRenderer.send('relaunch') } diff --git a/src/types/language.ts b/src/types/language.ts index ba24fe97..5e9b6c80 100644 --- a/src/types/language.ts +++ b/src/types/language.ts @@ -2,5 +2,6 @@ export type Language = { language: string spellchecker: { enabled: boolean + languages: Array } }