Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6403 | Rev 6407 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

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