Browse Source

add locale detection

pull/1/head
Jonathan Cobb 4 years ago
parent
commit
0cf7321e71
3 changed files with 31 additions and 5 deletions
  1. +11
    -2
      src/_services/system.service.js
  2. +15
    -0
      src/_store/system.module.js
  3. +5
    -3
      src/app/App.vue

+ 11
- 2
src/_services/system.service.js View File

@@ -5,7 +5,8 @@ export const systemService = {
loadSystemConfigs, loadSystemConfigs,
loadMessages, loadMessages,
loadTimezones, loadTimezones,
detectTimezone
detectTimezone,
detectLocale
}; };


function loadSystemConfigs() { function loadSystemConfigs() {
@@ -31,7 +32,15 @@ function loadTimezones() {
} }


function detectTimezone() { 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(handleBasicResponse)
.then(timezone => { return timezone; }); .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; });
}

+ 15
- 0
src/_store/system.module.js View File

@@ -10,6 +10,7 @@ const state = {
locales: [], locales: [],
timezones: [], timezones: [],
detectedTimezone: null, detectedTimezone: null,
detectedLocale: null,
menu: [], menu: [],
error: null error: null
}; };
@@ -44,6 +45,13 @@ const actions = {
timezones => commit('detectTimezoneSuccess', timezones), timezones => commit('detectTimezoneSuccess', timezones),
error => commit('detectTimezoneFailure', error) 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) { detectTimezoneFailure(state, error) {
state.error = error; state.error = error;
},
detectLocaleRequest(state) {},
detectLocaleSuccess(state, detectedLocales) {
state.detectedLocale = detectedLocales.length > 0 ? detectedLocales[0] : null;
},
detectLocaleFailure(state, error) {
state.error = error;
} }
}; };




+ 5
- 3
src/app/App.vue View File

@@ -26,7 +26,7 @@ export default {
}, },
methods: { methods: {
...mapActions({ clearAlert: 'alert/clear' }), ...mapActions({ clearAlert: 'alert/clear' }),
...mapActions('system', ['loadSystemConfigs', 'loadMessages', 'loadTimezones', 'detectTimezone'])
...mapActions('system', ['loadSystemConfigs', 'loadMessages', 'loadTimezones', 'detectTimezone', 'detectLocale'])
}, },
watch: { watch: {
$route (to, from){ $route (to, from){
@@ -35,14 +35,16 @@ export default {
} }
}, },
created() { created() {
this.loadSystemConfigs(); // determine if we can show the registration link

// todo: allow user to choose locale // todo: allow user to choose locale
const locale = 'detect'; const locale = 'detect';
this.loadTimezones();
this.loadMessages('pre_auth', locale); this.loadMessages('pre_auth', locale);
this.loadMessages('countries', locale); this.loadMessages('countries', locale);
this.loadMessages('timezones', locale); this.loadMessages('timezones', locale);
this.detectLocale();
this.loadTimezones();
this.detectTimezone(); this.detectTimezone();
this.loadSystemConfigs(); // determine if we can show the registration link
} }
}; };
</script> </script>

Loading…
Cancel
Save