Rev 1126 | Rev 1133 | 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 } = payloadconst 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 } = payloadconst 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 } = payloadconst slidesIds = new Set([...state.slidesAllIds, slide.uuid])return {...state,slideById: {...state.slideById,[slide.uuid]: { ...slide, capsuleId }},slidesAllIds: Array.from(slidesIds)}}case TOPIC_ACTIONS.COMPLETE_TOPIC: {const { uuid } = payloadconst completedTopic = { ...state.topicById[uuid], completed: 1 }return {...state,topicById: {...state.topicById,[uuid]: completedTopic}}}case TOPIC_ACTIONS.COMPLETE_CAPSULE: {const { uuid } = payloadconst completedCapsule = { ...state.capsuleById[uuid], completed: 1 }return {...state,capsuleById: {...state.capsuleById,[uuid]: completedCapsule}}}case TOPIC_ACTIONS.COMPLETE_SLIDE: {const { uuid } = payloadconst completedSlide = { ...state.slideById[uuid], completed: 1 }return {...state,slideById: {...state.slideById,[uuid]: completedSlide}}}default:return state}}export default topicsReducer