fix(web_push_notification): Do not hard reload tab (#4380)
* fix(web_push_notification): Do not hard reload tab * fix(web_push_notification_worker): Guard against null subscription * refactor: Incorporate pull request feedback
This commit is contained in:
		
							parent
							
								
									0f92119ceb
								
							
						
					
					
						commit
						3e01a7e677
					
				
					 2 changed files with 41 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -49,6 +49,10 @@ const mapStateToProps = state => ({
 | 
			
		|||
@connect(mapStateToProps)
 | 
			
		||||
export default class UI extends React.PureComponent {
 | 
			
		||||
 | 
			
		||||
  static contextTypes = {
 | 
			
		||||
    router: PropTypes.object.isRequired,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static propTypes = {
 | 
			
		||||
    dispatch: PropTypes.func.isRequired,
 | 
			
		||||
    children: PropTypes.node,
 | 
			
		||||
| 
						 | 
				
			
			@ -123,6 +127,14 @@ export default class UI extends React.PureComponent {
 | 
			
		|||
    this.setState({ draggingOver: false });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleServiceWorkerPostMessage = ({ data }) => {
 | 
			
		||||
    if (data.type === 'navigate') {
 | 
			
		||||
      this.context.router.history.push(data.path);
 | 
			
		||||
    } else {
 | 
			
		||||
      console.warn('Unknown message type:', data.type); // eslint-disable-line no-console
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  componentWillMount () {
 | 
			
		||||
    window.addEventListener('resize', this.handleResize, { passive: true });
 | 
			
		||||
    document.addEventListener('dragenter', this.handleDragEnter, false);
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +143,10 @@ export default class UI extends React.PureComponent {
 | 
			
		|||
    document.addEventListener('dragleave', this.handleDragLeave, false);
 | 
			
		||||
    document.addEventListener('dragend', this.handleDragEnd, false);
 | 
			
		||||
 | 
			
		||||
    if ('serviceWorker' in  navigator) {
 | 
			
		||||
      navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.props.dispatch(refreshHomeTimeline());
 | 
			
		||||
    this.props.dispatch(refreshNotifications());
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue