All files / src/redux/reducers notifierReducer.js

100% Statements 16/16
100% Branches 7/7
100% Functions 6/6
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 532x       2x 3x                       2x 2x     3x             2x 2x     3x         2x 14x 14x   3x   2x   2x   7x          
const defaultState = {
  notifications: []
};
 
const enqueueSnackbar = (state, payload) => {
  return {
    ...state,
    notifications: [
      ...state.notifications,
      {
        key: payload.key,
        ...payload
      }
    ]
  };
};
 
const closeSnackbar = (state, payload) => {
  return {
    ...state,
    notifications: state.notifications.map(notification =>
      notification.key === payload
        ? { ...notification, dismissed: true }
        : { ...notification }
    )
  };
};
 
const removeSnackbar = (state, payload) => {
  return {
    ...state,
    notifications: state.notifications.filter(
      notification => notification.key !== payload
    )
  };
};
 
const notifierReducer = (state = defaultState, action) => {
  const { payload, type } = action;
  switch (type) {
    case "ENQUEUE_SNACKBAR":
      return enqueueSnackbar(state, payload);
    case "CLOSE_SNACKBAR":
      return closeSnackbar(state, payload);
    case "REMOVE_SNACKBAR":
      return removeSnackbar(state, payload);
    default:
      return state;
  }
};
 
export default notifierReducer;