Proyectos de Subversion LeadersLinked - Backend

Rev

Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7458 stevensc 1
import { feedActionTypes } from "./feed.types";
2
 
3
const initialState = {
4
  timelineUrl: "",
5
  allFeeds: [],
6
  currentFeed: null,
7
  loading: false,
8
  currentPage: 1,
9
  pages: 1,
10
};
11
 
12
const feedReducer = (state = initialState, { type, payload }) => {
13
  switch (type) {
14
    case feedActionTypes.SET_TIMELINE_URL:
15
      const newTimelineUrl = payload;
16
      return { ...state, timelineUrl: newTimelineUrl };
17
    case feedActionTypes.LOAD_FEEDS:
18
      return { ...state, loading: true };
19
    case feedActionTypes.LOAD_FEEDS_SUCCESS:
20
      const { feeds, currentPage, pages } = payload;
21
      return {
22
        ...state,
23
        allFeeds: feeds,
24
        currentPage: currentPage,
25
        pages: pages,
26
        loading: false,
27
      };
28
    case feedActionTypes.LOAD_FEEDS_FAILURE:
29
      return state;
30
    case feedActionTypes.ADD_FEED:
31
      if(payload.feedSharedId){
32
        const newFeed = payload.feed;
33
        const oldFeeds = state.allFeeds.map((feed)=> {
34
          if(feed.feed_unique === payload.feedSharedId){
35
            feed.owner_shared = (parseInt(feed.owner_shared) + 1).toString()
36
          }
37
          return feed
38
        });
39
        const newAllFeeds = [newFeed, ...oldFeeds];
40
        return { ...state, allFeeds: newAllFeeds };
41
      }
42
      else {
43
        const newFeed = payload.feed;
44
        const newAllFeeds = [newFeed, ...state.allFeeds];
45
        return { ...state, allFeeds: newAllFeeds };
46
      }
47
    case feedActionTypes.DELETE_FEED:
48
      const feedIdToDelete = payload;
49
      return {
50
        ...state,
51
        allFeeds: state.allFeeds.filter(
52
          (feed) => feed.feed_unique !== feedIdToDelete
53
        ),
54
      };
55
    case feedActionTypes.ADD_CURRENT_FEED:
56
      return { ...state, currentFeed: payload };
57
    case feedActionTypes.SET_CURRENT_PAGE:
58
      const newCurrentPage = payload;
59
      return { ...state, currentPage: newCurrentPage };
60
    default:
61
      return state;
62
  }
63
};
64
 
65
export default feedReducer;