Rev 5 | Rev 1650 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
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 state}case 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