[Glitch] Add a confirmation dialog when hitting reply and the compose box isn't empty
This commit is contained in:
		
							parent
							
								
									515ce8f469
								
							
						
					
					
						commit
						c6e4c48942
					
				
					 2 changed files with 28 additions and 2 deletions
				
			
		|  | @ -31,6 +31,8 @@ const messages = defineMessages({ | |||
|   redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' }, | ||||
|   redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' }, | ||||
|   blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' }, | ||||
|   replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, | ||||
|   replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, | ||||
| }); | ||||
| 
 | ||||
| const makeMapStateToProps = () => { | ||||
|  | @ -67,7 +69,18 @@ const makeMapStateToProps = () => { | |||
| const mapDispatchToProps = (dispatch, { intl }) => ({ | ||||
| 
 | ||||
|   onReply (status, router) { | ||||
|     dispatch((_, getState) => { | ||||
|       let state = getState(); | ||||
|       if (state.getIn(['compose', 'text']).trim().length !== 0) { | ||||
|         dispatch(openModal('CONFIRM', { | ||||
|           message: intl.formatMessage(messages.replyMessage), | ||||
|           confirm: intl.formatMessage(messages.replyConfirm), | ||||
|           onConfirm: () => dispatch(replyCompose(status, router)), | ||||
|         })); | ||||
|       } else { | ||||
|         dispatch(replyCompose(status, router)); | ||||
|       } | ||||
|     }); | ||||
|   }, | ||||
| 
 | ||||
|   onModalReblog (status) { | ||||
|  |  | |||
|  | @ -50,6 +50,8 @@ const messages = defineMessages({ | |||
|   revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' }, | ||||
|   hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' }, | ||||
|   detailedStatus: { id: 'status.detailed_status', defaultMessage: 'Detailed conversation view' }, | ||||
|   replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, | ||||
|   replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, | ||||
| }); | ||||
| 
 | ||||
| const makeMapStateToProps = () => { | ||||
|  | @ -60,6 +62,7 @@ const makeMapStateToProps = () => { | |||
|     settings: state.get('local_settings'), | ||||
|     ancestorsIds: state.getIn(['contexts', 'ancestors', props.params.statusId]), | ||||
|     descendantsIds: state.getIn(['contexts', 'descendants', props.params.statusId]), | ||||
|     askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0, | ||||
|   }); | ||||
| 
 | ||||
|   return mapStateToProps; | ||||
|  | @ -81,6 +84,7 @@ export default class Status extends ImmutablePureComponent { | |||
|     ancestorsIds: ImmutablePropTypes.list, | ||||
|     descendantsIds: ImmutablePropTypes.list, | ||||
|     intl: PropTypes.object.isRequired, | ||||
|     askReplyConfirmation: PropTypes.bool, | ||||
|   }; | ||||
| 
 | ||||
|   state = { | ||||
|  | @ -140,7 +144,16 @@ export default class Status extends ImmutablePureComponent { | |||
|   } | ||||
| 
 | ||||
|   handleReplyClick = (status) => { | ||||
|     this.props.dispatch(replyCompose(status, this.context.router.history)); | ||||
|     let { askReplyConfirmation, dispatch, intl } = this.props; | ||||
|     if (askReplyConfirmation) { | ||||
|       dispatch(openModal('CONFIRM', { | ||||
|         message: intl.formatMessage(messages.replyMessage), | ||||
|         confirm: intl.formatMessage(messages.replyConfirm), | ||||
|         onConfirm: () => dispatch(replyCompose(status, this.context.router.history)), | ||||
|       })); | ||||
|     } else { | ||||
|       dispatch(replyCompose(status, this.context.router.history)); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   handleModalReblog = (status) => { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue