Proyectos de Subversion LeadersLinked - Backend

Rev

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 = payload;
      return { ...state, timelineUrl: newTimelineUrl };
    case feedActionTypes.LOAD_FEEDS:
      return { ...state, loading: true };
    case feedActionTypes.LOAD_FEEDS_SUCCESS:
      const { feeds, currentPage, pages } = payload;
      return {
        ...state,
        allFeeds: feeds,
        currentPage: currentPage,
        pages: pages,
        loading: false,
      };
    case feedActionTypes.LOAD_FEEDS_FAILURE:
      return state;
    case feedActionTypes.ADD_FEED:
      if(payload.feedSharedId){
        const newFeed = payload.feed;
        const 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.feed;
        const newAllFeeds = [newFeed, ...state.allFeeds];
        return { ...state, allFeeds: newAllFeeds };
      }
    case feedActionTypes.DELETE_FEED:
      const feedIdToDelete = payload;
      return {
        ...state,
        allFeeds: state.allFeeds.filter(
          (feed) => feed.feed_unique !== feedIdToDelete
        ),
      };
    case feedActionTypes.ADD_CURRENT_FEED:
      return { ...state, currentFeed: payload };
    case feedActionTypes.SET_CURRENT_PAGE:
      const newCurrentPage = payload;
      return { ...state, currentPage: newCurrentPage };
    default:
      return state;
  }
};

export default feedReducer;