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 { | ||||
|     type: COMPOSE_REPLY, | ||||
|     payload: payload | ||||
|     status: status | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -2,11 +2,24 @@ import { connect }                                          from 'react-redux'; | ||||
| import ComposeForm                                          from '../components/compose_form'; | ||||
| 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) { | ||||
|   return { | ||||
|     text: state.getIn(['compose', 'text']), | ||||
|     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 Immutable                                                                                              from 'immutable'; | ||||
| import * as constants      from '../actions/compose'; | ||||
| import { TIMELINE_DELETE } from '../actions/timelines'; | ||||
| import Immutable           from 'immutable'; | ||||
| 
 | ||||
| const initialState = Immutable.Map({ | ||||
|   text: '', | ||||
| @ -13,7 +14,8 @@ export default function compose(state = initialState, action) { | ||||
|       return state.set('text', action.text); | ||||
|     case constants.COMPOSE_REPLY: | ||||
|       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: | ||||
|       return state.withMutations(map => { | ||||
| @ -27,6 +29,12 @@ export default function compose(state = initialState, action) { | ||||
|       }); | ||||
|     case constants.COMPOSE_SUBMIT_FAIL: | ||||
|       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: | ||||
|       return state; | ||||
|   } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user