Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1151 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3719 stevensc 1
import { TOPIC_ACTIONS } from './topics.types';
2
 
3
const initialState = {
4
  topicsAllIds: [],
5
  topicById: {},
6
  capsulesAllIds: [],
7
  capsuleById: {},
8
  slidesAllIds: [],
9
  slideById: {}
10
};
11
 
12
const topicsReducer = (state = initialState, { type, payload }) => {
13
  switch (type) {
14
    case TOPIC_ACTIONS.ADD_TOPIC: {
15
      const topic = payload;
16
      const topicsIds = new Set([...state.topicsAllIds, topic.uuid]);
17
 
18
      return {
19
        ...state,
20
        topicById: {
21
          ...state.topicById,
22
          [topic.uuid]: topic
23
        },
24
        topicsAllIds: Array.from(topicsIds)
25
      };
26
    }
27
 
28
    case TOPIC_ACTIONS.ADD_CAPSULE: {
29
      const capsule = payload;
30
      const capsulesIds = new Set([...state.capsulesAllIds, capsule.uuid]);
31
 
32
      return {
33
        ...state,
34
        capsuleById: {
35
          ...state.capsuleById,
36
          [capsule.uuid]: capsule
37
        },
38
        capsulesAllIds: Array.from(capsulesIds)
39
      };
40
    }
41
 
42
    case TOPIC_ACTIONS.ADD_SLIDE: {
43
      const slide = payload;
44
      const slidesIds = new Set([...state.slidesAllIds, slide.uuid]);
45
 
46
      return {
47
        ...state,
48
        slideById: {
49
          ...state.slideById,
50
          [slide.uuid]: slide
51
        },
52
        slidesAllIds: Array.from(slidesIds)
53
      };
54
    }
55
 
56
    default:
57
      return state;
58
  }
59
};
60
 
61
export default topicsReducer;