Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1133 | Rev 1151 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { TOPIC_ACTIONS } from './topics.types'

const initialState = {
  topicsAllIds: [],
  topicById: {},
  capsulesAllIds: [],
  capsuleById: {},
  slidesAllIds: [],
  slideById: {}
}

const topicsReducer = (state = initialState, { type, payload }) => {
  switch (type) {
    case TOPIC_ACTIONS.ADD_TOPIC: {
      const topic = payload

      const topicsIds = new Set([...state.topicsAllIds, topic.uuid])

      return {
        ...state,
        topicById: {
          ...state.topicById,
          [topic.uuid]: topic
        },
        topicsAllIds: Array.from(topicsIds)
      }
    }

    case TOPIC_ACTIONS.ADD_CAPSULE: {
      const capsule = payload
      const capsulesIds = new Set([...state.capsulesAllIds, capsule.uuid])

      return {
        ...state,
        capsuleById: {
          ...state.capsuleById,
          [capsule.uuid]: capsule
        },
        capsulesAllIds: Array.from(capsulesIds)
      }
    }

    case TOPIC_ACTIONS.ADD_SLIDE: {
      const slide = payload
      const slidesIds = new Set([...state.slidesAllIds, slide.uuid])

      return {
        ...state,
        slideById: {
          ...state.slideById,
          [slide.uuid]: slide
        },
        slidesAllIds: Array.from(slidesIds)
      }
    }

    default:
      return state
  }
}

export default topicsReducer