2016-01-27 11:34:44 -08:00
|
|
|
import { handleActions } from 'redux-actions';
|
|
|
|
import types from './types';
|
|
|
|
|
2016-06-03 13:43:42 -07:00
|
|
|
const initialState = {
|
2017-01-14 19:49:01 -05:00
|
|
|
title: 'Learn To Code | freeCodeCamp',
|
2016-10-28 22:14:39 -07:00
|
|
|
isSignInAttempted: false,
|
2016-06-20 11:35:19 -07:00
|
|
|
user: '',
|
2016-06-20 21:01:14 -07:00
|
|
|
lang: '',
|
2016-06-03 13:43:42 -07:00
|
|
|
csrfToken: '',
|
2016-08-05 14:05:57 -07:00
|
|
|
theme: 'default'
|
2016-06-03 13:43:42 -07:00
|
|
|
};
|
|
|
|
|
2016-01-27 11:34:44 -08:00
|
|
|
export default handleActions(
|
|
|
|
{
|
|
|
|
[types.updateTitle]: (state, { payload = 'Learn To Code' }) => ({
|
|
|
|
...state,
|
2017-01-14 19:49:01 -05:00
|
|
|
title: payload + ' | freeCodeCamp'
|
2016-01-27 11:34:44 -08:00
|
|
|
}),
|
|
|
|
|
2016-06-20 11:35:19 -07:00
|
|
|
[types.updateThisUser]: (state, { payload: user }) => ({
|
2016-06-07 20:41:42 -07:00
|
|
|
...state,
|
2016-06-20 11:35:19 -07:00
|
|
|
user,
|
2016-10-28 22:14:39 -07:00
|
|
|
isSignInAttempted: true
|
2016-06-07 20:41:42 -07:00
|
|
|
}),
|
2016-07-20 15:06:44 -07:00
|
|
|
[types.updateAppLang]: (state, { payload = 'en' }) =>({
|
|
|
|
...state,
|
|
|
|
lang: payload
|
|
|
|
}),
|
2016-08-05 14:05:57 -07:00
|
|
|
[types.updateTheme]: (state, { payload = 'default' }) => ({
|
|
|
|
...state,
|
|
|
|
theme: payload
|
|
|
|
}),
|
2016-06-20 11:35:19 -07:00
|
|
|
[types.showSignIn]: state => ({
|
2016-01-27 11:34:44 -08:00
|
|
|
...state,
|
2016-10-28 22:14:39 -07:00
|
|
|
isSignInAttempted: true
|
2016-01-27 11:34:44 -08:00
|
|
|
}),
|
2016-06-20 11:35:19 -07:00
|
|
|
|
|
|
|
[types.challengeSaved]: (state, { payload: { points = 0 } }) => ({
|
2016-01-27 11:34:44 -08:00
|
|
|
...state,
|
|
|
|
points
|
2016-03-05 21:06:04 -08:00
|
|
|
}),
|
2016-06-09 16:02:51 -07:00
|
|
|
[types.delayedRedirect]: (state, { payload }) => ({
|
|
|
|
...state,
|
|
|
|
delayedRedirect: payload
|
2017-01-02 23:04:07 -08:00
|
|
|
}),
|
|
|
|
[types.openDropdown]: state => ({
|
|
|
|
...state,
|
|
|
|
isNavDropdownOpen: true
|
|
|
|
}),
|
|
|
|
[types.closeDropdown]: state => ({
|
|
|
|
...state,
|
|
|
|
isNavDropdownOpen: false
|
2016-01-27 11:34:44 -08:00
|
|
|
})
|
|
|
|
},
|
2016-06-03 13:43:42 -07:00
|
|
|
initialState
|
2016-01-27 11:34:44 -08:00
|
|
|
);
|