|
1 | 1 | import { LOGIN, LOGOUT, REDIRECT } from '../actions'; |
2 | 2 |
|
| 3 | +const userString = window.localStorage.getItem('user'); |
| 4 | +let user = {}; |
| 5 | +try { |
| 6 | + user = JSON.parse(userString) || {}; |
| 7 | +} catch (err) { |
| 8 | + console.log('User not found'); |
| 9 | +} |
| 10 | + |
3 | 11 | const initialState = { |
4 | | - username: '', |
5 | | - loggedIn: false, |
| 12 | + username: user.username || '', |
| 13 | + loggedIn: user.loggedIn || false, |
6 | 14 | redirectUrl: '', |
7 | 15 | }; |
8 | 16 |
|
9 | 17 | const authReducer = (state = initialState, action) => { |
10 | 18 | switch (action.type) { |
11 | 19 | case LOGIN: |
12 | | - return Object.assign({}, state, { loggedIn: true, username: action.payload }); |
| 20 | + const newLoginState = Object.assign({}, state, { loggedIn: true, username: action.payload }); |
| 21 | + const loginUser = { username: newLoginState.username, loggedIn: newLoginState.loggedIn }; |
| 22 | + window.localStorage.setItem('user', JSON.stringify(loginUser)); |
| 23 | + return newLoginState; |
13 | 24 | case LOGOUT: |
14 | | - return Object.assign({}, state, { loggedIn: false }); |
| 25 | + const newLogoutState = Object.assign({}, state, { loggedIn: false }); |
| 26 | + const logoutUser = { username: newLogoutState.username, loggedIn: newLogoutState.loggedIn }; |
| 27 | + window.localStorage.setItem('user', JSON.stringify(logoutUser)); |
| 28 | + return newLogoutState; |
15 | 29 | case REDIRECT: |
16 | 30 | return Object.assign({}, state, { redirectUrl: action.payload }); |
17 | 31 | default: |
|
0 commit comments