diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-05-09 16:00:40 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-05-09 16:00:40 -0400 |
commit | 0c701cc1d02c3d3b630050a0547f9dc632596013 (patch) | |
tree | b26324ebe2457d5cc8f8547513c053add166fc3c /webapp | |
parent | e52ab9737ed4043b5c6236561939d50a8588b349 (diff) | |
download | chat-0c701cc1d02c3d3b630050a0547f9dc632596013.tar.gz chat-0c701cc1d02c3d3b630050a0547f9dc632596013.tar.bz2 chat-0c701cc1d02c3d3b630050a0547f9dc632596013.zip |
PLT-6518 Fixed user's locale not being loaded with redux actions (#6359)
* Stopped ManageLanguages component from mutating user
* Removed obsolete reference to mm_user
* PLT-6518 Fixed user's locale not being loaded with redux actions
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/actions/global_actions.jsx | 16 | ||||
-rw-r--r-- | webapp/actions/user_actions.jsx | 3 | ||||
-rw-r--r-- | webapp/components/login/login_controller.jsx | 2 | ||||
-rw-r--r-- | webapp/components/root.jsx | 6 | ||||
-rw-r--r-- | webapp/components/user_settings/manage_languages.jsx | 10 | ||||
-rw-r--r-- | webapp/i18n/i18n.jsx | 7 | ||||
-rw-r--r-- | webapp/stores/localization_store.jsx | 2 |
7 files changed, 27 insertions, 19 deletions
diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index ed434fdc7..79706b594 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -379,7 +379,7 @@ export function newLocalizationSelected(locale) { translations: en }); } else { - const localeInfo = I18n.getLanguageInfo(locale) || I18n.getLanguageInfo(global.window.mm_config.DefaultClientLocale); + const localeInfo = I18n.getLanguageInfo(locale); Client.getTranslations( localeInfo.url, @@ -401,13 +401,23 @@ export function newLocalizationSelected(locale) { } } +export function loadCurrentLocale() { + const user = UserStore.getCurrentUser(); + + if (user && user.locale) { + newLocalizationSelected(user.locale); + } else { + loadDefaultLocale(); + } +} + export function loadDefaultLocale() { - const defaultLocale = global.window.mm_config.DefaultClientLocale; - let locale = global.window.mm_user ? global.window.mm_user.locale || defaultLocale : defaultLocale; + let locale = global.window.mm_config.DefaultClientLocale; if (!I18n.getLanguageInfo(locale)) { locale = 'en'; } + return newLocalizationSelected(locale); } diff --git a/webapp/actions/user_actions.jsx b/webapp/actions/user_actions.jsx index 9d48e0c7a..c8d848555 100644 --- a/webapp/actions/user_actions.jsx +++ b/webapp/actions/user_actions.jsx @@ -9,6 +9,7 @@ import UserStore from 'stores/user_store.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import {getChannelMembersForUserIds} from 'actions/channel_actions.jsx'; +import {loadCurrentLocale} from 'actions/global_actions.jsx'; import {loadStatusesForProfilesList, loadStatusesForProfilesMap} from 'actions/status_actions.jsx'; import {getDirectChannelName, getUserIdFromChannelName} from 'utils/utils.jsx'; @@ -51,6 +52,8 @@ import {getTeamMembersByIds, getMyTeamMembers} from 'mattermost-redux/actions/te export function loadMe(callback) { loadMeRedux()(dispatch, getState).then( () => { + loadCurrentLocale(); + if (callback) { callback(); } diff --git a/webapp/components/login/login_controller.jsx b/webapp/components/login/login_controller.jsx index fa3412f34..04ba46896 100644 --- a/webapp/components/login/login_controller.jsx +++ b/webapp/components/login/login_controller.jsx @@ -210,7 +210,7 @@ export default class LoginController extends React.Component { finishSignin(team) { const query = this.props.location.query; - GlobalActions.loadDefaultLocale(); + GlobalActions.loadCurrentLocale(); if (query.redirect_to) { browserHistory.push(query.redirect_to); } else if (team) { diff --git a/webapp/components/root.jsx b/webapp/components/root.jsx index 6907e84e4..701ee6e80 100644 --- a/webapp/components/root.jsx +++ b/webapp/components/root.jsx @@ -20,8 +20,8 @@ export default class Root extends React.Component { constructor(props) { super(props); this.state = { - locale: 'en', - translations: null + locale: LocalizationStore.getLocale(), + translations: LocalizationStore.getTranslations() }; this.localizationChanged = this.localizationChanged.bind(this); @@ -113,7 +113,7 @@ export default class Root extends React.Component { LocalizationStore.addChangeListener(this.localizationChanged); // Get our localizaiton - GlobalActions.loadDefaultLocale(); + GlobalActions.loadCurrentLocale(); } componentWillUnmount() { diff --git a/webapp/components/user_settings/manage_languages.jsx b/webapp/components/user_settings/manage_languages.jsx index b88485110..09b32e1d7 100644 --- a/webapp/components/user_settings/manage_languages.jsx +++ b/webapp/components/user_settings/manage_languages.jsx @@ -33,12 +33,10 @@ export default class ManageLanguage extends React.Component { changeLanguage(e) { e.preventDefault(); - var user = this.props.user; - var locale = this.state.locale; - - user.locale = locale; - - this.submitUser(user); + this.submitUser({ + ...this.props.user, + locale: this.state.locale + }); } submitUser(user) { updateUser(user, Constants.UserUpdateEvents.LANGUAGE, diff --git a/webapp/i18n/i18n.jsx b/webapp/i18n/i18n.jsx index 9ea697c65..1e3efd7ff 100644 --- a/webapp/i18n/i18n.jsx +++ b/webapp/i18n/i18n.jsx @@ -133,14 +133,11 @@ export function getLanguages() { } export function getLanguageInfo(locale) { - if (!availableLanguages) { - setAvailableLanguages(); - } - return availableLanguages[locale]; + return getAllLanguages()[locale]; } export function isLanguageAvailable(locale) { - return Boolean(availableLanguages[locale]); + return Boolean(getLanguages()[locale]); } export function safariFix(callback) { diff --git a/webapp/stores/localization_store.jsx b/webapp/stores/localization_store.jsx index 2eb482699..0a25c860d 100644 --- a/webapp/stores/localization_store.jsx +++ b/webapp/stores/localization_store.jsx @@ -12,7 +12,7 @@ class LocalizationStoreClass extends EventEmitter { constructor() { super(); - this.currentLocale = 'en'; + this.currentLocale = ''; this.currentTranslations = null; } |