25 lines
726 B
JavaScript
25 lines
726 B
JavaScript
import { List as ImmutableList } from 'immutable';
|
|
|
|
import { MODAL_OPEN, MODAL_CLOSE } from '../actions/modals';
|
|
|
|
const initialState = ImmutableList();
|
|
|
|
export default function modal(state = initialState, action) {
|
|
switch(action.type) {
|
|
case MODAL_OPEN:
|
|
return state.push({ modalType: action.modalType, modalProps: action.modalProps });
|
|
case MODAL_CLOSE:
|
|
if (state.size === 0) {
|
|
return state;
|
|
}
|
|
if (action.modalType === undefined) {
|
|
return state.pop();
|
|
}
|
|
if (state.some(({ modalType }) => action.modalType === modalType)) {
|
|
return state.slice(0, state.findLastIndex(({ modalType }) => action.modalType === modalType));
|
|
}
|
|
return state;
|
|
default:
|
|
return state;
|
|
}
|
|
}
|