Whalebird-desktop-client-ma.../src/renderer/store/Preferences/Language.ts

69 lines
1.9 KiB
TypeScript
Raw Normal View History

import Language from '~/src/constants/language'
import { Module, MutationTree, ActionTree } from 'vuex'
2019-04-14 16:11:24 +02:00
import { RootState } from '@/store'
import { Language as LanguageSet } from '~/src/types/language'
2019-06-05 16:16:07 +02:00
import { BaseConfig } from '~/src/types/preference'
import { MyWindow } from '~/src/types/global'
2020-04-11 11:22:49 +02:00
const win = (window as any) as MyWindow
export type LanguageState = {
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> = {
loadLanguage: ({ commit }) => {
return new Promise((resolve, reject) => {
win.ipcRenderer.send('get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
reject(err)
})
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_LANGUAGE, conf.language as LanguageSet)
resolve(conf)
})
})
},
changeLanguage: ({ commit }, key: string) => {
return new Promise(resolve => {
win.ipcRenderer.send('change-language', key)
win.ipcRenderer.once('response-change-language', (_, value: string) => {
commit(MUTATION_TYPES.CHANGE_LANGUAGE, value)
resolve(value)
})
})
},
relaunch: () => {
win.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>