Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6398 | Rev 6405 | 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:
6403 stevensc 32
      console.log('adding')
3943 stevensc 33
      if (payload.feedSharedId) {
6396 stevensc 34
        const newFeed = payload.feed
3943 stevensc 35
        const oldFeeds = state.allFeeds.map((feed) => {
36
          if (feed.feed_unique === payload.feedSharedId) {
1018 stevensc 37
            feed.owner_shared = (parseInt(feed.owner_shared) + 1).toString()
38
          }
39
          return feed
6396 stevensc 40
        })
41
        const newAllFeeds = [newFeed, ...oldFeeds]
42
        return { ...state, allFeeds: newAllFeeds }
43
      } else {
44
        const newFeed = payload.feed
45
        const newAllFeeds = [newFeed, ...state.allFeeds]
46
        return { ...state, allFeeds: newAllFeeds }
1018 stevensc 47
      }
6396 stevensc 48
    case feedActionTypes.UPDATE_FEED:
49
      if (payload.uuid) {
50
        const currentFeedIndex = state.allFeeds.findIndex(
51
          (feed) => feed.feed_uuid === payload.uuid
52
        )
6398 stevensc 53
        console.log(state.allFeeds)
54
 
6396 stevensc 55
        const newState = (structuredClone(state.allFeeds)[currentFeedIndex] =
56
          payload.feed)
57
 
6398 stevensc 58
        console.log(newState)
59
        console.log(currentFeedIndex)
60
 
6396 stevensc 61
        return { ...state, allFeeds: newState }
62
      } else {
63
        const newFeed = payload.feed
64
        const newAllFeeds = [newFeed, ...state.allFeeds]
65
        return { ...state, allFeeds: newAllFeeds }
1018 stevensc 66
      }
1 www 67
    case feedActionTypes.DELETE_FEED:
68
      return {
69
        ...state,
6396 stevensc 70
        allFeeds: state.allFeeds.filter((feed) => feed.feed_unique !== payload),
71
      }
1 www 72
    case feedActionTypes.ADD_CURRENT_FEED:
6396 stevensc 73
      return { ...state, currentFeed: payload }
1 www 74
    case feedActionTypes.SET_CURRENT_PAGE:
6396 stevensc 75
      const newCurrentPage = payload
76
      return { ...state, currentPage: newCurrentPage }
1 www 77
    default:
6396 stevensc 78
      return state
1 www 79
  }
6396 stevensc 80
}
1 www 81
 
6396 stevensc 82
export default feedReducer