diff --git a/src/actions/authActions.js b/src/actions/authActions.js index 7cdd1c0..fb454ba 100644 --- a/src/actions/authActions.js +++ b/src/actions/authActions.js @@ -1,8 +1,8 @@ import { MYBADGES_CONNECT, MYBADGES_DISCONNECT, USER_LOADED, USER_LOADING, AUTH_ERROR, LOGIN_SUCCESS, LOGIN_FAIL, LOGOUT_SUCCESS, LOGOUT_FAIL, REFRESH_TOKEN_SUCCESS } from '../actions/types'; import axios from 'axios'; -import { returnErrors, returnSuccess } from './messageActions' - +import { returnErrors, returnSuccess } from './messageActions'; +import { setLanguage } from './generalActions'; // Check token & load user export const loadUser = () => (dispatch) => { @@ -16,6 +16,7 @@ export const loadUser = () => (dispatch) => { type: USER_LOADED, payload: res.data.user }); + dispatch(setLanguage(res.data.user.language)); }, error: err => { if(err.response){ @@ -61,6 +62,7 @@ export const login = ({ email, password }) => (dispatch) => { type: LOGIN_SUCCESS, payload: res.data }); + dispatch(setLanguage(res.data.user.language)); dispatch(returnSuccess(res.data.message, res.status, 'LOGIN_SUCCESS')); }) .catch(err => { @@ -130,6 +132,11 @@ export const logout = () => (dispatch) => { dispatch({ type: LOGOUT_SUCCESS }); + var locale = 'de_DE'; + if (window.localStorage.getItem('locale')) { + locale = window.localStorage.getItem('locale'); + } + dispatch(setLanguage(locale)); dispatch(returnSuccess(res.data.message, res.status, 'LOGOUT_SUCCESS')); clearTimeout(logoutTimerId); }, diff --git a/src/actions/generalActions.js b/src/actions/generalActions.js index 3bd0c64..6d1838b 100644 --- a/src/actions/generalActions.js +++ b/src/actions/generalActions.js @@ -7,7 +7,10 @@ export const visitPage = () => (dispatch) => { }); }; -export const setLanguage = (language) => (dispatch) => { +export const setLanguage = (language) => (dispatch, getState) => { + if(!getState().auth.isAuthenticated){ + window.localStorage.setItem('locale', language); + } dispatch({ type: LANGUAGE, payload: language diff --git a/src/components/Blockly/BlocklyWindow.js b/src/components/Blockly/BlocklyWindow.js index 60b3ee3..aa9ce69 100644 --- a/src/components/Blockly/BlocklyWindow.js +++ b/src/components/Blockly/BlocklyWindow.js @@ -18,16 +18,9 @@ class BlocklyWindow extends Component { constructor(props) { super(props); this.simpleWorkspace = React.createRef(); - // if (locale === null) { - // if (navigator.language === 'de-DE') { - // locale = 'de'; - // } else { - // locale = 'en'; - // } - // } - if (this.props.language === 'de') { + if (this.props.language === 'de_DE') { Blockly.setLocale(De); - } else if (this.props.language === 'en') { + } else if (this.props.language === 'en_US') { Blockly.setLocale(En); } } diff --git a/src/components/Content.js b/src/components/Content.js index 38e6b85..9260421 100644 --- a/src/components/Content.js +++ b/src/components/Content.js @@ -14,18 +14,18 @@ import Cookies from './Cookies'; class Content extends Component { componentDidMount() { - if (this.props.language === 'de') { + if (this.props.language === 'de_DE') { Blockly.setLocale(De); - } else if (this.props.language === 'en') { + } else if (this.props.language === 'en_US') { Blockly.setLocale(En); } } componentDidUpdate(props){ if(props.language !== this.props.language){ - if (this.props.language === 'de') { + if (this.props.language === 'de_DE') { Blockly.setLocale(De); - } else if (this.props.language === 'en') { + } else if (this.props.language === 'en_US') { Blockly.setLocale(En); } } diff --git a/src/components/Settings/LanguageSelector.js b/src/components/Settings/LanguageSelector.js index 7164868..f069b1b 100644 --- a/src/components/Settings/LanguageSelector.js +++ b/src/components/Settings/LanguageSelector.js @@ -37,8 +37,8 @@ class LanguageSelector extends Component { value={this.props.language} onChange={this.handleChange} > - {Blockly.Msg.settings_language_de} - {Blockly.Msg.settings_language_en} + {Blockly.Msg.settings_language_de} + {Blockly.Msg.settings_language_en} diff --git a/src/reducers/generalReducer.js b/src/reducers/generalReducer.js index 35ab59a..b76d9c2 100644 --- a/src/reducers/generalReducer.js +++ b/src/reducers/generalReducer.js @@ -1,11 +1,35 @@ import { VISIT, LANGUAGE, RENDERER, STATISTICS } from '../actions/types'; +const initialLanguage = () => { + if (window.localStorage.getItem('locale')) { + return window.localStorage.getItem('locale'); + } + if (navigator.language === 'de-DE'){ + return 'de_DE'; + } + return 'en_US'; +}; + +const initialRenderer = () => { + if (window.localStorage.getItem('renderer')) { + return window.localStorage.getItem('renderer'); + } + return 'geras'; +}; + +const initialStatistics = () => { + if (window.localStorage.getItem('statistics')) { + return JSON.parse(window.localStorage.getItem('statistics')); + } + return false; +}; + const initialState = { pageVisits: 0, // detect if previous URL was - language: 'de', - renderer: window.localStorage.getItem('renderer') || 'geras', - statistics: window.localStorage.getItem('statistics') === 'true' ? true : window.localStorage.getItem('statistics') === 'false' ? false : false + language: initialLanguage(), + renderer: initialRenderer(), + statistics: initialStatistics() }; export default function(state = initialState, action){