Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1125 | Rev 1132 | 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 { uuid, ...topic } = payload

      return {
        ...state,
        topicById: {
          ...state.topicById,
          [uuid]: { ...topic, uuid }
        },
        topicsAllIds: [...state.topicsAllIds, uuid]
      }
    }

    case TOPIC_ACTIONS.ADD_CAPSULE: {
      const { topicId, capsule } = payload

      return {
        ...state,
        capsuleById: {
          ...state.capsuleById,
          [capsule.uuid]: { ...capsule, topicId }
        },
        capsulesAllIds: [...state.capsulesAllIds, capsule.uuid]
      }
    }

    case TOPIC_ACTIONS.ADD_SLIDE: {
      const { capsuleId, slide } = payload

      return {
        ...state,
        slideById: {
          ...state.capsuleById,
          [slide.uuid]: { ...slide, capsuleId }
        },
        slidesAllIds: [...state.slidesAllIds, slide.uuid]
      }
    }

    default:
      return state
  }
}

export default topicsReducer