From 0cf7321e714801118c7ab13ca2202a68936c0dea Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Mon, 16 Dec 2019 16:26:47 -0500 Subject: [PATCH] add locale detection --- src/_services/system.service.js | 13 +++++++++++-- src/_store/system.module.js | 15 +++++++++++++++ src/app/App.vue | 8 +++++--- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/_services/system.service.js b/src/_services/system.service.js index dba74f4..310f3a1 100644 --- a/src/_services/system.service.js +++ b/src/_services/system.service.js @@ -5,7 +5,8 @@ export const systemService = { loadSystemConfigs, loadMessages, loadTimezones, - detectTimezone + detectTimezone, + detectLocale }; function loadSystemConfigs() { @@ -31,7 +32,15 @@ function loadTimezones() { } function detectTimezone() { - return fetch(`${config.apiUrl}/me/detect/timezone`, getWithAuth()) + const requestOptions = userLoggedIn() ? getWithAuth() : { method: 'GET' }; + return fetch(`${config.apiUrl}/auth/detect/timezone`, requestOptions) .then(handleBasicResponse) .then(timezone => { return timezone; }); } + +function detectLocale () { + const requestOptions = userLoggedIn() ? getWithAuth() : { method: 'GET' }; + return fetch(`${config.apiUrl}/auth/detect/locale`, requestOptions) + .then(handleBasicResponse) + .then(locales => { return locales; }); +} diff --git a/src/_store/system.module.js b/src/_store/system.module.js index 1784add..171bc5b 100644 --- a/src/_store/system.module.js +++ b/src/_store/system.module.js @@ -10,6 +10,7 @@ const state = { locales: [], timezones: [], detectedTimezone: null, + detectedLocale: null, menu: [], error: null }; @@ -44,6 +45,13 @@ const actions = { timezones => commit('detectTimezoneSuccess', timezones), error => commit('detectTimezoneFailure', error) ) + }, + detectLocale({ commit }) { + commit('detectLocaleRequest'); + systemService.detectLocale().then( + locales => commit('detectLocaleSuccess', locales), + error => commit('detectLocaleFailure', error) + ) } }; @@ -118,6 +126,13 @@ const mutations = { }, detectTimezoneFailure(state, error) { state.error = error; + }, + detectLocaleRequest(state) {}, + detectLocaleSuccess(state, detectedLocales) { + state.detectedLocale = detectedLocales.length > 0 ? detectedLocales[0] : null; + }, + detectLocaleFailure(state, error) { + state.error = error; } }; diff --git a/src/app/App.vue b/src/app/App.vue index 687b961..836588f 100644 --- a/src/app/App.vue +++ b/src/app/App.vue @@ -26,7 +26,7 @@ export default { }, methods: { ...mapActions({ clearAlert: 'alert/clear' }), - ...mapActions('system', ['loadSystemConfigs', 'loadMessages', 'loadTimezones', 'detectTimezone']) + ...mapActions('system', ['loadSystemConfigs', 'loadMessages', 'loadTimezones', 'detectTimezone', 'detectLocale']) }, watch: { $route (to, from){ @@ -35,14 +35,16 @@ export default { } }, created() { + this.loadSystemConfigs(); // determine if we can show the registration link + // todo: allow user to choose locale const locale = 'detect'; - this.loadTimezones(); this.loadMessages('pre_auth', locale); this.loadMessages('countries', locale); this.loadMessages('timezones', locale); + this.detectLocale(); + this.loadTimezones(); this.detectTimezone(); - this.loadSystemConfigs(); // determine if we can show the registration link } }; \ No newline at end of file