Shift+click on column Back button to return to last pinable column
This commit is contained in:
		
							parent
							
								
									8d57c0e70e
								
							
						
					
					
						commit
						e3c1472040
					
				
					 11 changed files with 61 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -8,10 +8,15 @@ export default class ColumnBackButton extends React.PureComponent {
 | 
			
		|||
    router: PropTypes.object,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  handleClick = () => {
 | 
			
		||||
  handleClick = (event) => {
 | 
			
		||||
    // if history is exhausted, or we would leave mastodon, just go to root.
 | 
			
		||||
    if (window.history.state) {
 | 
			
		||||
      this.context.router.history.goBack();
 | 
			
		||||
      const state = this.context.router.history.location.state;
 | 
			
		||||
      if (event.shiftKey && state && state.mastodonBackSteps) {
 | 
			
		||||
        this.context.router.history.go(-state.mastodonBackSteps);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.context.router.history.goBack();
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      this.context.router.history.push('/');
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,10 +8,15 @@ export default class ColumnBackButtonSlim extends React.PureComponent {
 | 
			
		|||
    router: PropTypes.object,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  handleClick = () => {
 | 
			
		||||
  handleClick = (event) => {
 | 
			
		||||
    // if history is exhausted, or we would leave mastodon, just go to root.
 | 
			
		||||
    if (window.history.state) {
 | 
			
		||||
      this.context.router.history.goBack();
 | 
			
		||||
      const state = this.context.router.history.location.state;
 | 
			
		||||
      if (event.shiftKey && state && state.mastodonBackSteps) {
 | 
			
		||||
        this.context.router.history.go(-state.mastodonBackSteps);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.context.router.history.goBack();
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      this.context.router.history.push('/');
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,10 +47,15 @@ export default class ColumnHeader extends React.PureComponent {
 | 
			
		|||
    animatingNCD: false,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  historyBack = () => {
 | 
			
		||||
  historyBack = (skip) => {
 | 
			
		||||
    // if history is exhausted, or we would leave mastodon, just go to root.
 | 
			
		||||
    if (window.history.state) {
 | 
			
		||||
      this.context.router.history.goBack();
 | 
			
		||||
      const state = this.context.router.history.location.state;
 | 
			
		||||
      if (skip && state && state.mastodonBackSteps) {
 | 
			
		||||
        this.context.router.history.go(-state.mastodonBackSteps);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.context.router.history.goBack();
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      this.context.router.history.push('/');
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -73,8 +78,8 @@ export default class ColumnHeader extends React.PureComponent {
 | 
			
		|||
    this.props.onMove(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleBackClick = () => {
 | 
			
		||||
    this.historyBack();
 | 
			
		||||
  handleBackClick = (event) => {
 | 
			
		||||
    this.historyBack(event.shiftKey);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleTransitionEnd = () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,9 @@ export default class Permalink extends React.PureComponent {
 | 
			
		|||
 | 
			
		||||
      if (this.context.router) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
        this.context.router.history.push(this.props.to);
 | 
			
		||||
        let state = {...this.context.router.history.location.state};
 | 
			
		||||
        state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
        this.context.router.history.push(this.props.to, state);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -295,7 +295,11 @@ export default class Status extends ImmutablePureComponent {
 | 
			
		|||
      else if (e.shiftKey) {
 | 
			
		||||
        this.setCollapsed(true);
 | 
			
		||||
        document.getSelection().removeAllRanges();
 | 
			
		||||
      } else router.history.push(destination);
 | 
			
		||||
      } else {
 | 
			
		||||
        let state = {...router.history.location.state};
 | 
			
		||||
        state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
        router.history.push(destination, state);
 | 
			
		||||
      }
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -304,7 +308,9 @@ export default class Status extends ImmutablePureComponent {
 | 
			
		|||
    if (this.context.router && e.button === 0) {
 | 
			
		||||
      const id = e.currentTarget.getAttribute('data-id');
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.context.router.history.push(`/accounts/${id}`);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(`/accounts/${id}`, state);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -337,11 +343,15 @@ export default class Status extends ImmutablePureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  handleHotkeyOpen = () => {
 | 
			
		||||
    this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
 | 
			
		||||
    let state = {...this.context.router.history.location.state};
 | 
			
		||||
    state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
    this.context.router.history.push(`/statuses/${this.props.status.get('id')}`, state);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleHotkeyOpenProfile = () => {
 | 
			
		||||
    this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
 | 
			
		||||
    let state = {...this.context.router.history.location.state};
 | 
			
		||||
    state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
    this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleHotkeyMoveUp = e => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -150,7 +150,9 @@ export default class StatusActionBar extends ImmutablePureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  handleOpen = () => {
 | 
			
		||||
    this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
 | 
			
		||||
    let state = {...this.context.router.history.location.state};
 | 
			
		||||
    state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
    this.context.router.history.push(`/statuses/${this.props.status.get('id')}`, state);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleEmbed = () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,9 @@ export default class MovedNote extends ImmutablePureComponent {
 | 
			
		|||
  handleAccountClick = e => {
 | 
			
		||||
    if (e.button === 0) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.to.get('id')}`);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.to.get('id')}`, state);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    e.stopPropagation();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,9 @@ export default class DetailedStatus extends ImmutablePureComponent {
 | 
			
		|||
  handleAccountClick = (e) => {
 | 
			
		||||
    if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    e.stopPropagation();
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +53,9 @@ export default class DetailedStatus extends ImmutablePureComponent {
 | 
			
		|||
  parseClick = (e, destination) => {
 | 
			
		||||
    if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.context.router.history.push(destination);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(destination, state);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    e.stopPropagation();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -331,7 +331,9 @@ export default class Status extends ImmutablePureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  handleHotkeyOpenProfile = () => {
 | 
			
		||||
    this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
 | 
			
		||||
    let state = {...this.context.router.history.location.state};
 | 
			
		||||
    state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
    this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleMoveUp = id => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,9 @@ export default class BoostModal extends ImmutablePureComponent {
 | 
			
		|||
    if (e.button === 0) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.props.onClose();
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,9 @@ export default class FavouriteModal extends ImmutablePureComponent {
 | 
			
		|||
    if (e.button === 0) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.props.onClose();
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
 | 
			
		||||
      let state = {...this.context.router.history.location.state};
 | 
			
		||||
      state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
 | 
			
		||||
      this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue