import { handleActions } from 'redux-actions';
import { nanoid } from 'nanoid';
import {
addErrorToast, addNoticeToast, addSuccessToast,
} from '../actions/toasts';
import { removeToast } from '../actions';
import { TOAST_TYPES } from '../helpers/constants';
const toasts = handleActions({
[addErrorToast]: (state, { payload }) => {
const message = payload.error.toString();
console.error(payload.error);
const errorToast = {
id: nanoid(),
message,
options: payload.options,
type: TOAST_TYPES.ERROR,
};
const newState = { ...state, notices: [...state.notices, errorToast] };
return newState;
},
[addSuccessToast]: (state, { payload }) => {
const successToast = {
message: payload,
type: TOAST_TYPES.SUCCESS,
const newState = { ...state, notices: [...state.notices, successToast] };
[addNoticeToast]: (state, { payload }) => {
const noticeToast = {
message: payload.error.toString(),
type: TOAST_TYPES.NOTICE,
const newState = { ...state, notices: [...state.notices, noticeToast] };
[removeToast]: (state, { payload }) => {
const filtered = state.notices.filter((notice) => notice.id !== payload);
const newState = { ...state, notices: filtered };
}, { notices: [] });
export default toasts;