Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6407 | | 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:
6407 stevensc 48
      const { feed, uuid } = payload
49
      const currentFeedIndex = state.allFeeds.findIndex(
50
        (feed) => feed.feed_uuid === uuid
51
      )
6398 stevensc 52
 
6408 stevensc 53
      const newFeeds = structuredClone(state.allFeeds)
54
      newFeeds[currentFeedIndex] = feed
6396 stevensc 55
 
6407 stevensc 56
      return {
57
        ...state,
6408 stevensc 58
        allFeeds: newFeeds,
1018 stevensc 59
      }
1 www 60
    case feedActionTypes.DELETE_FEED:
61
      return {
62
        ...state,
6396 stevensc 63
        allFeeds: state.allFeeds.filter((feed) => feed.feed_unique !== payload),
64
      }
1 www 65
    case feedActionTypes.ADD_CURRENT_FEED:
6396 stevensc 66
      return { ...state, currentFeed: payload }
1 www 67
    case feedActionTypes.SET_CURRENT_PAGE:
6396 stevensc 68
      const newCurrentPage = payload
69
      return { ...state, currentPage: newCurrentPage }
1 www 70
    default:
6396 stevensc 71
      return state
1 www 72
  }
6396 stevensc 73
}
1 www 74
 
6396 stevensc 75
export default feedReducer