Proyectos de Subversion LeadersLinked - Backend

Rev

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

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