Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { omit, remove } from 'lodash';
- import { ActionTypes } from '../util/ActionTypes';
- import {REHYDRATE} from 'redux-persist/constants';
- import update from 'immutability-helper';
- export const initialState = {
- userFavorites: [],
- favoritesMap: {},
- };
- export function FavoriteReducer(state = initialState, action) {
- switch (action.type) {
- case ActionTypes.FETCH_FAVORITES_REQUEST_SUCCESS:
- const userFavorites = [];
- const favoritesMap = {};
- action.data.favorites.map((item) => {
- let key = item.favoritedUrl;
- key = key.split('/');
- key = key[key.length - 1];
- favoritesMap[key] = item;
- userFavorites.push(key);
- });
- return {
- ...state,
- userFavorites,
- favoritesMap,
- }
- case ActionTypes.ADD_FAVORITE_FOR_USER: {
- const data = action.data;
- const favoritedUrl = data.favoritedUrl;
- let sessionId = favoritedUrl.split('/');
- sessionId = sessionId[sessionId.length - 1];
- return update(state, {
- userFavorites: {$unshift: [sessionId]},
- favoritesMap: {$merge: {[sessionId]: data}},
- });
- }
- case ActionTypes.DELETE_FAVORITE_FOR_USER: {
- const sessionId = action.sessionId;
- let userFavorites = state.userFavorites.slice();
- remove(userFavorites, (item) => {
- return item === sessionId;
- });
- let favoritesMap = Object.assign({}, state.favoritesMap);
- favoritesMap = omit(favoritesMap, [sessionId]);
- return update(state, {
- userFavorites: {$set: userFavorites},
- favoritesMap: {$set: favoritesMap},
- });
- }
- case ActionTypes.LOGOUT:
- return initialState;
- default:
- return state;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement