AutorÃa | Ultima modificación | Ver Log |
/* eslint-disable no-case-declarations */import { feedActionTypes } from './feed.types'const initialState = {timelineUrl: '',allFeeds: [],currentFeed: null,loading: false,currentPage: 1,pages: 1,}const feedReducer = (state = initialState, { type, payload }) => {switch (type) {case feedActionTypes.SET_TIMELINE_URL:const newTimelineUrl = payloadreturn { ...state, timelineUrl: newTimelineUrl }case feedActionTypes.LOAD_FEEDS:return { ...state, loading: true }case feedActionTypes.LOAD_FEEDS_SUCCESS:const { feeds, currentPage, pages } = payloadreturn {...state,allFeeds: feeds,currentPage,pages,loading: false,}case feedActionTypes.LOAD_FEEDS_FAILURE:return statecase feedActionTypes.ADD_FEED:if (payload.feedSharedId) {const newFeed = payload.feedconst oldFeeds = state.allFeeds.map((feed) => {if (feed.feed_unique === payload.feedSharedId) {feed.owner_shared = (parseInt(feed.owner_shared) + 1).toString()}return feed})const newAllFeeds = [newFeed, ...oldFeeds]return { ...state, allFeeds: newAllFeeds }} else {const newFeed = payload.feedconst newAllFeeds = [newFeed, ...state.allFeeds]return { ...state, allFeeds: newAllFeeds }}case feedActionTypes.UPDATE_FEED:const { feed, uuid } = payloadconst currentFeedIndex = state.allFeeds.findIndex((feed) => feed.feed_uuid === uuid)const newFeeds = structuredClone(state.allFeeds)newFeeds[currentFeedIndex] = feedreturn {...state,allFeeds: newFeeds,}case feedActionTypes.DELETE_FEED:return {...state,allFeeds: state.allFeeds.filter((feed) => feed.feed_unique !== payload),}case feedActionTypes.ADD_CURRENT_FEED:return { ...state, currentFeed: payload }case feedActionTypes.SET_CURRENT_PAGE:const newCurrentPage = payloadreturn { ...state, currentPage: newCurrentPage }default:return state}}export default feedReducer