Rev 1132 | Rev 1146 | 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
const topicsIds = new Set([...state.topicsAllIds, uuid])
return {
...state,
topicById: {
...state.topicById,
[uuid]: { ...topic, uuid }
},
topicsAllIds: Array.from(topicsIds)
}
}
case TOPIC_ACTIONS.ADD_CAPSULE: {
const { topicId, capsule } = payload
const capsulesIds = new Set([...state.capsulesAllIds, capsule.uuid])
return {
...state,
capsuleById: {
...state.capsuleById,
[capsule.uuid]: { ...capsule, topicId }
},
capsulesAllIds: Array.from(capsulesIds)
}
}
case TOPIC_ACTIONS.ADD_SLIDE: {
const { capsuleId, slide } = payload
const topicId = state.capsuleById[capsuleId].topicId
const slidesIds = new Set([...state.slidesAllIds, slide.uuid])
return {
...state,
slideById: {
...state.slideById,
[slide.uuid]: { ...slide, capsuleId, topicId }
},
slidesAllIds: Array.from(slidesIds)
}
}
case TOPIC_ACTIONS.COMPLETE_TOPIC: {
const uuid = payload
const completedTopic = { ...state.topicById[uuid], completed: 1 }
return {
...state,
topicById: {
...state.topicById,
[uuid]: completedTopic
}
}
}
case TOPIC_ACTIONS.COMPLETE_CAPSULE: {
const uuid = payload
const completedCapsule = { ...state.capsuleById[uuid], completed: 1 }
return {
...state,
capsuleById: {
...state.capsuleById,
[uuid]: completedCapsule
}
}
}
case TOPIC_ACTIONS.COMPLETE_SLIDE: {
const uuid = payload
const completedSlide = { ...state.slideById[uuid], completed: 1 }
return {
...state,
slideById: {
...state.slideById,
[uuid]: completedSlide
}
}
}
default:
return state
}
}
export default topicsReducer