Fix web UI allowing uploads past status limit via drag & drop (#11863)
Fix #11659
This commit is contained in:
		
							parent
							
								
									d256901f60
								
							
						
					
					
						commit
						bdeff5ae15
					
				
					 1 changed files with 6 additions and 2 deletions
				
			
		| 
						 | 
					@ -66,6 +66,7 @@ const mapStateToProps = state => ({
 | 
				
			||||||
  isComposing: state.getIn(['compose', 'is_composing']),
 | 
					  isComposing: state.getIn(['compose', 'is_composing']),
 | 
				
			||||||
  hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
 | 
					  hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
 | 
				
			||||||
  hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
 | 
					  hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
 | 
				
			||||||
 | 
					  canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,
 | 
				
			||||||
  dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
 | 
					  dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -232,6 +233,7 @@ class UI extends React.PureComponent {
 | 
				
			||||||
    isComposing: PropTypes.bool,
 | 
					    isComposing: PropTypes.bool,
 | 
				
			||||||
    hasComposingText: PropTypes.bool,
 | 
					    hasComposingText: PropTypes.bool,
 | 
				
			||||||
    hasMediaAttachments: PropTypes.bool,
 | 
					    hasMediaAttachments: PropTypes.bool,
 | 
				
			||||||
 | 
					    canUploadMore: PropTypes.bool,
 | 
				
			||||||
    location: PropTypes.object,
 | 
					    location: PropTypes.object,
 | 
				
			||||||
    intl: PropTypes.object.isRequired,
 | 
					    intl: PropTypes.object.isRequired,
 | 
				
			||||||
    dropdownMenuIsOpen: PropTypes.bool,
 | 
					    dropdownMenuIsOpen: PropTypes.bool,
 | 
				
			||||||
| 
						 | 
					@ -278,13 +280,14 @@ class UI extends React.PureComponent {
 | 
				
			||||||
      this.dragTargets.push(e.target);
 | 
					      this.dragTargets.push(e.target);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files')) {
 | 
					    if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore) {
 | 
				
			||||||
      this.setState({ draggingOver: true });
 | 
					      this.setState({ draggingOver: true });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleDragOver = (e) => {
 | 
					  handleDragOver = (e) => {
 | 
				
			||||||
    if (this.dataTransferIsText(e.dataTransfer)) return false;
 | 
					    if (this.dataTransferIsText(e.dataTransfer)) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    e.preventDefault();
 | 
					    e.preventDefault();
 | 
				
			||||||
    e.stopPropagation();
 | 
					    e.stopPropagation();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -299,12 +302,13 @@ class UI extends React.PureComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleDrop = (e) => {
 | 
					  handleDrop = (e) => {
 | 
				
			||||||
    if (this.dataTransferIsText(e.dataTransfer)) return;
 | 
					    if (this.dataTransferIsText(e.dataTransfer)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    e.preventDefault();
 | 
					    e.preventDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.setState({ draggingOver: false });
 | 
					    this.setState({ draggingOver: false });
 | 
				
			||||||
    this.dragTargets = [];
 | 
					    this.dragTargets = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (e.dataTransfer && e.dataTransfer.files.length >= 1) {
 | 
					    if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore) {
 | 
				
			||||||
      this.props.dispatch(uploadCompose(e.dataTransfer.files));
 | 
					      this.props.dispatch(uploadCompose(e.dataTransfer.files));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue