Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6396 | Rev 6403 | 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
        console.log(state.allFeeds)
53
 
6396 stevensc 54
        const newState = (structuredClone(state.allFeeds)[currentFeedIndex] =
55
          payload.feed)
56
 
6398 stevensc 57
        console.log(newState)
58
        console.log(currentFeedIndex)
59
 
6396 stevensc 60
        return { ...state, allFeeds: newState }
61
      } else {
62
        const newFeed = payload.feed
63
        const newAllFeeds = [newFeed, ...state.allFeeds]
64
        return { ...state, allFeeds: newAllFeeds }
1018 stevensc 65
      }
1 www 66
    case feedActionTypes.DELETE_FEED:
67
      return {
68
        ...state,
6396 stevensc 69
        allFeeds: state.allFeeds.filter((feed) => feed.feed_unique !== payload),
70
      }
1 www 71
    case feedActionTypes.ADD_CURRENT_FEED:
6396 stevensc 72
      return { ...state, currentFeed: payload }
1 www 73
    case feedActionTypes.SET_CURRENT_PAGE:
6396 stevensc 74
      const newCurrentPage = payload
75
      return { ...state, currentPage: newCurrentPage }
1 www 76
    default:
6396 stevensc 77
      return state
1 www 78
  }
6396 stevensc 79
}
1 www 80
 
6396 stevensc 81
export default feedReducer