You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { AuthActionTypes, AuthActions } from 'actions/auth-actions';
|
|
import { UsersActionTypes, UsersActions } from 'actions/users-actions';
|
|
import { UsersState } from './interfaces';
|
|
|
|
const defaultState: UsersState = {
|
|
users: [],
|
|
fetching: false,
|
|
initialized: false,
|
|
};
|
|
|
|
export default function (
|
|
state: UsersState = defaultState,
|
|
action: UsersActions | AuthActions,
|
|
): UsersState {
|
|
switch (action.type) {
|
|
case UsersActionTypes.GET_USERS: {
|
|
return {
|
|
...state,
|
|
fetching: true,
|
|
initialized: false,
|
|
};
|
|
}
|
|
case UsersActionTypes.GET_USERS_SUCCESS:
|
|
return {
|
|
...state,
|
|
fetching: false,
|
|
initialized: true,
|
|
users: action.payload.users,
|
|
};
|
|
case UsersActionTypes.GET_USERS_FAILED:
|
|
return {
|
|
...state,
|
|
fetching: false,
|
|
initialized: true,
|
|
};
|
|
case AuthActionTypes.LOGOUT_SUCCESS: {
|
|
return {
|
|
...defaultState,
|
|
};
|
|
}
|
|
default:
|
|
return state;
|
|
}
|
|
}
|