芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/.cache/admin/src/containers/NewNotification/reducer.js
import produce from 'immer'; import { get } from 'lodash'; import { SHOW_NEW_NOTIFICATION, HIDE_NEW_NOTIFICATION } from './constants'; const initialState = { notifId: 0, notifications: [], }; const notificationReducer = (state = initialState, action) => // eslint-disable-next-line consistent-return produce(state, draftState => { switch (action.type) { case SHOW_NEW_NOTIFICATION: { draftState.notifications.push({ // No action.config spread to limit the notification API and avoid customization id: state.notifId, type: get(action, ['config', 'type'], 'success'), message: get(action, ['config', 'message'], { id: 'notification.success.saved', defaultMessage: 'Saved', }), title: get(action, ['config', 'title'], null), link: get(action, ['config', 'link'], null), timeout: get(action, ['config', 'timeout'], 2500), blockTransition: get(action, ['config', 'blockTransition'], false), uid: get(action, ['config', 'uid'], null), onClose: get(action, ['config', 'onClose'], null), centered: get(action, ['config', 'centered'], false), }); draftState.notifId = state.notifId + 1; break; } case HIDE_NEW_NOTIFICATION: { const indexToRemove = state.notifications.findIndex(notif => notif.id === action.id); if (indexToRemove !== -1) { draftState.notifications.splice(indexToRemove, 1); } break; } default: { return draftState; } } }); export default notificationReducer;