import {
  RECEIVE_MY_COURSES,
  SWITCH_TAB,
  NOMORE_COURSE,
  START_FETCHING_COURSES,
} from "./actions"
import { SET_CURRENT_USER } from "src/store/userAction"

const initialState = {
  switchTab: false,
  courseList: [],
  page: 0,
  statusCode: 0,
  msg: "",
  noMore: false,
  isLoading: true,
}

export default function myCourses(state = initialState, action) {
  const { type, payload = null } = action
  switch (type) {
    case RECEIVE_MY_COURSES:
      let { courseList, ...rest } = payload
      return {
        ...state,
        ...rest,
        courseList:
          Object.keys(courseList).length === 0
            ? state.courseList
            : state.courseList.concat(courseList),
        isLoading: false,
      }
    case START_FETCHING_COURSES:
      return { ...state, ...payload }
    case SWITCH_TAB:
      return { ...state, switchTab: payload }
    case NOMORE_COURSE:
      return { ...state, noMore: true }
    case SET_CURRENT_USER:
      return payload.hasError ? initialState : { ...state, page: 0 }
    default:
      return state
  }
}