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;
  }
}
