mirror of
https://github.com/wassname/talk.git
synced 2026-06-30 15:36:46 +08:00
62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
import * as actions from '../constants/auth';
|
|
import merge from 'lodash/merge';
|
|
|
|
const initialState = {
|
|
checkedInitialLogin: false,
|
|
initialLoginError: null,
|
|
user: null,
|
|
};
|
|
|
|
const purge = user => {
|
|
const {settings, ...userData} = user; // eslint-disable-line
|
|
return userData;
|
|
};
|
|
|
|
export default function auth(state = initialState, action) {
|
|
switch (action.type) {
|
|
case actions.CHECK_LOGIN_FAILURE:
|
|
return {
|
|
...state,
|
|
initialLoginError: action.error,
|
|
checkedInitialLogin: true,
|
|
user: null,
|
|
};
|
|
case actions.CHECK_LOGIN_SUCCESS:
|
|
return {
|
|
...state,
|
|
checkedInitialLogin: true,
|
|
user: action.user ? purge(action.user) : null,
|
|
};
|
|
case actions.HANDLE_SUCCESSFUL_LOGIN:
|
|
return {
|
|
...state,
|
|
user: action.user ? purge(action.user) : null,
|
|
};
|
|
case actions.LOGOUT:
|
|
return {
|
|
...state,
|
|
user: null,
|
|
};
|
|
case actions.UPDATE_STATUS: {
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
status: merge({}, state.user.status, action.status),
|
|
},
|
|
};
|
|
}
|
|
case actions.UPDATE_USERNAME:
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
username: action.username,
|
|
lowercaseUsername: action.username.toLowerCase(),
|
|
},
|
|
};
|
|
default:
|
|
return state;
|
|
}
|
|
}
|