spolnik/JAlgoArena-UI

View on GitHub
src/client/users/reducers/index.ts

Summary

Maintainability
A
1 hr
Test Coverage
import * as types from '../../constants/ActionTypes';
import { User } from '../domain/User';
 
export interface AuthState {
user: User | null;
error: string | null;
users: Array<User> | null;
}
 
interface AuthAction {
type: string;
user?: User;
error?: string;
users?: User[];
}
 
const defaultStartState: AuthState = {
user: null,
error: null,
users: null,
};
 
Function `auth` has 35 lines of code (exceeds 25 allowed). Consider refactoring.
export function auth(state: AuthState = defaultStartState, action: AuthAction) {
switch (action.type) {
case types.LOGIN_SUCCESS:
return {...state,
user: action.user,
error: null,
};
 
case types.LOGIN_FAIL:
case types.SIGNUP_FAIL:
return {...state,
user: null,
error: action.error,
};
 
case types.CHECKED_SESSION_STATUS:
if (action.user && action.user.id) {
return {...state,
user: action.user,
error: null,
};
}
return defaultStartState;
case types.LOGOUT_SUCCESS:
return defaultStartState;
case types.NAVIGATE_AWAY_FROM_AUTH_FORM:
case types.SIGNUP_SUCCESS:
case types.SIGNUP_REQUEST:
return {...state,
error: null,
};
 
case types.FETCH_USERS:
return {...state,
users: action.users,
};
 
default:
return state;
}
}