From c0138b3811826f68b52e7e38b5a453bb2a5f0ca8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 20 Jan 2022 17:17:22 +0100 Subject: [PATCH 1/4] fix: Set Locale after Login --- frontend/src/views/Pages/Login.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/views/Pages/Login.vue index 4d2b75d2a..1c2f4c8d0 100755 --- a/frontend/src/views/Pages/Login.vue +++ b/frontend/src/views/Pages/Login.vue @@ -64,6 +64,7 @@ import InputPassword from '../../components/Inputs/InputPassword' import InputEmail from '../../components/Inputs/InputEmail' import { login } from '../../graphql/queries' import { getCommunityInfoMixin } from '../../mixins/getCommunityInfo' +import { localeChanged } from 'vee-validate' export default { name: 'login', @@ -101,6 +102,8 @@ export default { data: { login }, } = result this.$store.dispatch('login', login) + this.$i18n.locale = login.language + localeChanged(login.language) this.$router.push('/overview') loader.hide() }) From 6d6cdb1e647d005d3e18a33a1c43934c2c9cf6ad Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 24 Jan 2022 17:26:47 +0100 Subject: [PATCH 2/4] set i18n.locale and localeChanged from vee-validate inside the language mutation of the store --- frontend/src/store/store.js | 4 ++++ frontend/src/store/store.test.js | 18 ++++++++++++++++++ frontend/src/views/Pages/Login.vue | 3 --- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index d219ecacd..1a6521cd7 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -1,11 +1,15 @@ import Vue from 'vue' import Vuex from 'vuex' import createPersistedState from 'vuex-persistedstate' +import { localeChanged } from 'vee-validate' +import i18n from '../i18n.js' Vue.use(Vuex) export const mutations = { language: (state, language) => { + i18n.locale = language + localeChanged(language) state.language = language }, email: (state, email) => { diff --git a/frontend/src/store/store.test.js b/frontend/src/store/store.test.js index da108b9ff..4c0c03178 100644 --- a/frontend/src/store/store.test.js +++ b/frontend/src/store/store.test.js @@ -1,8 +1,18 @@ import { mutations, actions } from './store' import Vuex from 'vuex' import Vue from 'vue' +import i18n from '../i18n.js' +import { localeChanged } from 'vee-validate' jest.mock('vuex') +jest.mock('../i18n.js') +jest.mock('vee-validate', () => { + return { + localeChanged: jest.fn(), + } +}) + +i18n.locale = 'blubb' const { language, @@ -29,6 +39,14 @@ describe('Vuex store', () => { language(state, 'de') expect(state.language).toEqual('de') }) + + it('sets the i18n locale', () => { + expect(i18n.locale).toBe('de') + }) + + it('calls localChanged of vee-validate', () => { + expect(localeChanged).toBeCalledWith('de') + }) }) describe('email', () => { diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/views/Pages/Login.vue index 1c2f4c8d0..4d2b75d2a 100755 --- a/frontend/src/views/Pages/Login.vue +++ b/frontend/src/views/Pages/Login.vue @@ -64,7 +64,6 @@ import InputPassword from '../../components/Inputs/InputPassword' import InputEmail from '../../components/Inputs/InputEmail' import { login } from '../../graphql/queries' import { getCommunityInfoMixin } from '../../mixins/getCommunityInfo' -import { localeChanged } from 'vee-validate' export default { name: 'login', @@ -102,8 +101,6 @@ export default { data: { login }, } = result this.$store.dispatch('login', login) - this.$i18n.locale = login.language - localeChanged(login.language) this.$router.push('/overview') loader.hide() }) From e8920f4c35de6cd6dbd7ec14722438089a9a4ad2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 24 Jan 2022 17:39:42 +0100 Subject: [PATCH 3/4] all locale handling is done by store, so that commit the language to store on change is enough. Note that dispatch login calls commit language --- .../src/components/#LanguageSwitchSelect.vue# | 39 +++++++++++++++++++ .../src/components/.#LanguageSwitchSelect.vue | 1 + frontend/src/components/LanguageSwitch.vue | 5 +-- frontend/src/main.js | 2 +- frontend/src/routes/guards.js | 3 +- frontend/src/views/Pages/Register.vue | 3 -- .../UserProfile/UserCard_Language.spec.js | 4 -- .../Pages/UserProfile/UserCard_Language.vue | 3 -- 8 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 frontend/src/components/#LanguageSwitchSelect.vue# create mode 120000 frontend/src/components/.#LanguageSwitchSelect.vue diff --git a/frontend/src/components/#LanguageSwitchSelect.vue# b/frontend/src/components/#LanguageSwitchSelect.vue# new file mode 100644 index 000000000..545cef4e9 --- /dev/null +++ b/frontend/src/components/#LanguageSwitchSelect.vue# @@ -0,0 +1,39 @@ + + diff --git a/frontend/src/components/.#LanguageSwitchSelect.vue b/frontend/src/components/.#LanguageSwitchSelect.vue new file mode 120000 index 000000000..8a9d4d991 --- /dev/null +++ b/frontend/src/components/.#LanguageSwitchSelect.vue @@ -0,0 +1 @@ +moriz@bluestar.2222:1642854724 \ No newline at end of file diff --git a/frontend/src/components/LanguageSwitch.vue b/frontend/src/components/LanguageSwitch.vue index 5e4c71287..2678883c3 100644 --- a/frontend/src/components/LanguageSwitch.vue +++ b/frontend/src/components/LanguageSwitch.vue @@ -12,7 +12,6 @@ diff --git a/frontend/src/components/.#LanguageSwitchSelect.vue b/frontend/src/components/.#LanguageSwitchSelect.vue deleted file mode 120000 index 8a9d4d991..000000000 --- a/frontend/src/components/.#LanguageSwitchSelect.vue +++ /dev/null @@ -1 +0,0 @@ -moriz@bluestar.2222:1642854724 \ No newline at end of file