import { Action } from "redux"; import { User } from "../../types/user"; import { SET_CURRENT_USER, setCurrentUserAction } from "../actions/auth"; import { FETCH_PROFILE_SUCCESS, fetchProfileSuccessAction } from "../actions/profile"; export interface AuthState { isAuthenticated: boolean currentUser: User } const defaultState = { isAuthenticated: false, currentUser: null, }; export function authReducer(state = defaultState, action: Action): AuthState { switch (action.type) { case SET_CURRENT_USER: return handleSetCurrentUser(state, action as setCurrentUserAction); case FETCH_PROFILE_SUCCESS: return handleFetchProfileSuccess(state, action as fetchProfileSuccessAction); } return state; } function handleSetCurrentUser(state: AuthState, { email }: setCurrentUserAction): AuthState { return { ...state, isAuthenticated: true, currentUser: { email } }; }; function handleFetchProfileSuccess(state: AuthState, { profile }: fetchProfileSuccessAction): AuthState { return { ...state, isAuthenticated: true, currentUser: { ...profile, } }; };