Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

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