Add modal stack to allow better boost modal and media modal interaction.
This commit is contained in:
		
							parent
							
								
									ddf3f4cf85
								
							
						
					
					
						commit
						c5b4e6b708
					
				
					 2 changed files with 7 additions and 11 deletions
				
			
		|  | @ -3,8 +3,8 @@ import { closeModal } from 'flavours/glitch/actions/modal'; | ||||||
| import ModalRoot from '../components/modal_root'; | import ModalRoot from '../components/modal_root'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   type: state.get('modal').modalType, |   type: state.getIn(['modal', 0, 'modalType'], null), | ||||||
|   props: state.get('modal').modalProps, |   props: state.getIn(['modal', 0, 'modalProps'], {}), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
|  |  | ||||||
|  | @ -1,19 +1,15 @@ | ||||||
| import { MODAL_OPEN, MODAL_CLOSE } from 'flavours/glitch/actions/modal'; | import { MODAL_OPEN, MODAL_CLOSE } from 'flavours/glitch/actions/modal'; | ||||||
| import { TIMELINE_DELETE } from 'flavours/glitch/actions/timelines'; | import { TIMELINE_DELETE } from 'flavours/glitch/actions/timelines'; | ||||||
|  | import { Stack as ImmutableStack, Map as ImmutableMap } from 'immutable'; | ||||||
| 
 | 
 | ||||||
| const initialState = { | export default function modal(state = ImmutableStack(), action) { | ||||||
|   modalType: null, |  | ||||||
|   modalProps: {}, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| export default function modal(state = initialState, action) { |  | ||||||
|   switch(action.type) { |   switch(action.type) { | ||||||
|   case MODAL_OPEN: |   case MODAL_OPEN: | ||||||
|     return { modalType: action.modalType, modalProps: action.modalProps }; |     return state.unshift(ImmutableMap({ modalType: action.modalType, modalProps: action.modalProps })); | ||||||
|   case MODAL_CLOSE: |   case MODAL_CLOSE: | ||||||
|     return (action.modalType === undefined || action.modalType === state.modalType) ? initialState : state; |     return (action.modalType === undefined || action.modalType === state.getIn([0, 'modalType'])) ? state.shift() : state; | ||||||
|   case TIMELINE_DELETE: |   case TIMELINE_DELETE: | ||||||
|     return (state.modalProps.statusId === action.id) ? initialState : state; |     return state.filterNot((modal) => modal.get('modalProps').statusId === action.id); | ||||||
|   default: |   default: | ||||||
|     return state; |     return state; | ||||||
|   } |   } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue