Make compose form also use normalized data
This commit is contained in:
		
							parent
							
								
									926eea89b5
								
							
						
					
					
						commit
						05001d54d1
					
				| @ -15,10 +15,10 @@ export function changeCompose(text) { | |||||||
|   }; |   }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function replyCompose(payload) { | export function replyCompose(status) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_REPLY, |     type: COMPOSE_REPLY, | ||||||
|     payload: payload |     status: status | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,11 +2,24 @@ import { connect }                                          from 'react-redux'; | |||||||
| import ComposeForm                                          from '../components/compose_form'; | import ComposeForm                                          from '../components/compose_form'; | ||||||
| import { changeCompose, submitCompose, cancelReplyCompose } from '../actions/compose'; | import { changeCompose, submitCompose, cancelReplyCompose } from '../actions/compose'; | ||||||
| 
 | 
 | ||||||
|  | function selectStatus(state) { | ||||||
|  |   let statusId = state.getIn(['compose', 'in_reply_to'], null); | ||||||
|  | 
 | ||||||
|  |   if (statusId === null) { | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   let status = state.getIn(['timelines', 'statuses', statusId]); | ||||||
|  |   status = status.set('account', state.getIn(['timelines', 'accounts', status.get('account')])); | ||||||
|  | 
 | ||||||
|  |   return status; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| const mapStateToProps = function (state, props) { | const mapStateToProps = function (state, props) { | ||||||
|   return { |   return { | ||||||
|     text: state.getIn(['compose', 'text']), |     text: state.getIn(['compose', 'text']), | ||||||
|     is_submitting: state.getIn(['compose', 'is_submitting']), |     is_submitting: state.getIn(['compose', 'is_submitting']), | ||||||
|     in_reply_to: state.getIn(['compose', 'in_reply_to']) |     in_reply_to: selectStatus(state) | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| import * as constants from '../actions/compose'; | import * as constants      from '../actions/compose'; | ||||||
| import Immutable                                                                                              from 'immutable'; | import { TIMELINE_DELETE } from '../actions/timelines'; | ||||||
|  | import Immutable           from 'immutable'; | ||||||
| 
 | 
 | ||||||
| const initialState = Immutable.Map({ | const initialState = Immutable.Map({ | ||||||
|   text: '', |   text: '', | ||||||
| @ -13,7 +14,8 @@ export default function compose(state = initialState, action) { | |||||||
|       return state.set('text', action.text); |       return state.set('text', action.text); | ||||||
|     case constants.COMPOSE_REPLY: |     case constants.COMPOSE_REPLY: | ||||||
|       return state.withMutations(map => { |       return state.withMutations(map => { | ||||||
|         map.set('in_reply_to', action.payload).set('text', `@${action.payload.getIn(['account', 'acct'])} `); |         map.set('in_reply_to', action.status.get('id')); | ||||||
|  |         map.set('text', `@${action.status.getIn(['account', 'acct'])} `); | ||||||
|       }); |       }); | ||||||
|     case constants.COMPOSE_REPLY_CANCEL: |     case constants.COMPOSE_REPLY_CANCEL: | ||||||
|       return state.withMutations(map => { |       return state.withMutations(map => { | ||||||
| @ -27,6 +29,12 @@ export default function compose(state = initialState, action) { | |||||||
|       }); |       }); | ||||||
|     case constants.COMPOSE_SUBMIT_FAIL: |     case constants.COMPOSE_SUBMIT_FAIL: | ||||||
|       return state.set('is_submitting', false); |       return state.set('is_submitting', false); | ||||||
|  |     case TIMELINE_DELETE: | ||||||
|  |       if (action.id === state.get('in_reply_to')) { | ||||||
|  |         return state.set('in_reply_to', null); | ||||||
|  |       } else { | ||||||
|  |         return state; | ||||||
|  |       } | ||||||
|     default: |     default: | ||||||
|       return state; |       return state; | ||||||
|   } |   } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user