We wait to load the user before applying the theme as we will begin aggressively caching most of the react app routes. This means we can not depend on user data to determine.
86 lines
2.0 KiB
JavaScript
86 lines
2.0 KiB
JavaScript
import { handleActions } from 'redux-actions';
|
|
import types from './types';
|
|
|
|
const initialState = {
|
|
title: 'Learn To Code | Free Code Camp',
|
|
shouldShowSignIn: false,
|
|
user: '',
|
|
lang: '',
|
|
csrfToken: '',
|
|
windowHeight: 0,
|
|
navHeight: 0,
|
|
isMainChatOpen: false,
|
|
isHelpChatOpen: false,
|
|
theme: 'default'
|
|
};
|
|
|
|
export default handleActions(
|
|
{
|
|
[types.updateTitle]: (state, { payload = 'Learn To Code' }) => ({
|
|
...state,
|
|
title: payload + ' | Free Code Camp'
|
|
}),
|
|
|
|
[types.updateThisUser]: (state, { payload: user }) => ({
|
|
...state,
|
|
user,
|
|
shouldShowSignIn: true
|
|
}),
|
|
[types.updateAppLang]: (state, { payload = 'en' }) =>({
|
|
...state,
|
|
lang: payload
|
|
}),
|
|
[types.updateTheme]: (state, { payload = 'default' }) => ({
|
|
...state,
|
|
theme: payload
|
|
}),
|
|
[types.showSignIn]: state => ({
|
|
...state,
|
|
shouldShowSignIn: true
|
|
}),
|
|
|
|
[types.challengeSaved]: (state, { payload: { points = 0 } }) => ({
|
|
...state,
|
|
points
|
|
}),
|
|
[types.updateWindowHeight]: (state, { payload: windowHeight }) => ({
|
|
...state,
|
|
windowHeight
|
|
}),
|
|
[types.updateNavHeight]: (state, { payload: navHeight }) => ({
|
|
...state,
|
|
navHeight
|
|
}),
|
|
[types.toggleMapDrawer]: state => ({
|
|
...state,
|
|
isMapAlreadyLoaded: true,
|
|
isMapDrawerOpen: !state.isMapDrawerOpen
|
|
}),
|
|
[types.closeMapDrawer]: state => ({
|
|
...state,
|
|
isMapDrawerOpen: false
|
|
}),
|
|
[types.toggleMainChat]: state => ({
|
|
...state,
|
|
isMainChatOpen: !state.isMainChatOpen
|
|
}),
|
|
[types.toggleHelpChat]: state => ({
|
|
...state,
|
|
isHelpChatOpen: !state.isHelpChatOpen
|
|
}),
|
|
[types.openHelpChat]: state => ({
|
|
...state,
|
|
isHelpChatOpen: true
|
|
}),
|
|
[types.closeHelpChat]: state => ({
|
|
...state,
|
|
isHelpChatOpen: false
|
|
}),
|
|
[types.delayedRedirect]: (state, { payload }) => ({
|
|
...state,
|
|
delayedRedirect: payload
|
|
})
|
|
},
|
|
initialState
|
|
);
|