Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2311 | Rev 3583 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { v4 as uuid } from 'uuid';
import { notificationActionTypes } from './notification.types';

const NotificationInitialState = {
  notifications: []
};

const notificationReducer = (state = NotificationInitialState, { type, payload }) => {
  switch (type) {
    case notificationActionTypes.ADD_NOTIFICATION: {
      const newNotification = { ...payload, id: uuid() };

      const alreadyExist = state.notifications.find(
        (notification) => notification.msg === newNotification.msg
      );

      if (alreadyExist) return state;

      return {
        ...state,
        notifications: [newNotification, ...state.notifications]
      };
    }
    case notificationActionTypes.REMOVE_NOTIFICATION: {
      const idToFilter = payload;
      return {
        ...state,
        notifications: state.notifications.filter((element) => element.id !== idToFilter)
      };
    }

    default:
      return state;
  }
};

export default notificationReducer;