2019-04-06 15:08:12 +02:00
|
|
|
import { ipcRenderer } from 'electron'
|
|
|
|
import Language from '~/src/constants/language'
|
|
|
|
import { Module, MutationTree, ActionTree } from 'vuex'
|
2019-04-14 16:11:24 +02:00
|
|
|
import { RootState } from '@/store'
|
2019-04-16 15:35:46 +02:00
|
|
|
import { Language as LanguageSet } from '~/src/types/language'
|
2019-06-05 16:16:07 +02:00
|
|
|
import { BaseConfig } from '~/src/types/preference'
|
2019-04-06 15:08:12 +02:00
|
|
|
|
2019-06-06 16:44:50 +02:00
|
|
|
export type LanguageState = {
|
2019-04-06 15:08:12 +02:00
|
|
|
language: LanguageSet
|
|
|
|
}
|
|
|
|
|
|
|
|
const state: LanguageState = {
|
|
|
|
language: {
|
|
|
|
language: Language.en.key
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const MUTATION_TYPES = {
|
|
|
|
UPDATE_LANGUAGE: 'updateLanguage',
|
|
|
|
CHANGE_LANGUAGE: 'changeLanguage'
|
|
|
|
}
|
|
|
|
|
|
|
|
const mutations: MutationTree<LanguageState> = {
|
|
|
|
[MUTATION_TYPES.UPDATE_LANGUAGE]: (state, conf: LanguageSet) => {
|
|
|
|
state.language = conf
|
|
|
|
},
|
|
|
|
[MUTATION_TYPES.CHANGE_LANGUAGE]: (state, key: string) => {
|
|
|
|
state.language.language = key
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-14 16:11:24 +02:00
|
|
|
const actions: ActionTree<LanguageState, RootState> = {
|
2019-04-06 15:08:12 +02:00
|
|
|
loadLanguage: ({ commit }) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
ipcRenderer.send('get-preferences')
|
|
|
|
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
|
|
|
|
ipcRenderer.removeAllListeners('response-get-preferences')
|
|
|
|
reject(err)
|
|
|
|
})
|
2019-06-05 16:16:07 +02:00
|
|
|
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
|
2019-04-06 15:08:12 +02:00
|
|
|
ipcRenderer.removeAllListeners('error-get-preferences')
|
|
|
|
commit(MUTATION_TYPES.UPDATE_LANGUAGE, conf.language as LanguageSet)
|
|
|
|
resolve(conf)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
changeLanguage: ({ commit }, key: string) => {
|
|
|
|
return new Promise(resolve => {
|
|
|
|
ipcRenderer.send('change-language', key)
|
|
|
|
ipcRenderer.once('response-change-language', (_, value: string) => {
|
|
|
|
commit(MUTATION_TYPES.CHANGE_LANGUAGE, value)
|
|
|
|
resolve(value)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
relaunch: () => {
|
|
|
|
ipcRenderer.send('relaunch')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default {
|
|
|
|
namespaced: true,
|
|
|
|
state: state,
|
|
|
|
mutations: mutations,
|
|
|
|
actions: actions
|
2019-04-14 16:11:24 +02:00
|
|
|
} as Module<LanguageState, RootState>
|