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
}
}