Browse Source

Fix back button to never go to a different website using history len check

closed-social-glitch-2
Ondřej Hruška 7 years ago
committed by beatrix
parent
commit
7859e6ad45
4 changed files with 23 additions and 6 deletions
  1. +6
    -2
      app/javascript/mastodon/components/column_back_button.js
  2. +6
    -2
      app/javascript/mastodon/components/column_back_button_slim.js
  3. +6
    -2
      app/javascript/mastodon/components/column_header.js
  4. +5
    -0
      app/javascript/mastodon/main.js

+ 6
- 2
app/javascript/mastodon/components/column_back_button.js View File

@ -9,8 +9,12 @@ export default class ColumnBackButton extends React.PureComponent {
};
handleClick = () => {
if (window.history && window.history.length === 1) this.context.router.history.push('/');
else this.context.router.history.goBack();
// if history is exhausted, or we would leave mastodon, just go to root.
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
this.context.router.history.push('/');
} else {
this.context.router.history.goBack();
}
}
render () {

+ 6
- 2
app/javascript/mastodon/components/column_back_button_slim.js View File

@ -9,8 +9,12 @@ export default class ColumnBackButtonSlim extends React.PureComponent {
};
handleClick = () => {
if (window.history && window.history.length === 1) this.context.router.history.push('/');
else this.context.router.history.goBack();
// if history is exhausted, or we would leave mastodon, just go to root.
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
this.context.router.history.push('/');
} else {
this.context.router.history.goBack();
}
}
render () {

+ 6
- 2
app/javascript/mastodon/components/column_header.js View File

@ -45,8 +45,12 @@ export default class ColumnHeader extends React.PureComponent {
}
handleBackClick = () => {
if (window.history && window.history.length === 1) this.context.router.history.push('/');
else this.context.router.history.goBack();
// if history is exhausted, or we would leave mastodon, just go to root.
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
this.context.router.history.push('/');
} else {
this.context.router.history.goBack();
}
}
handleTransitionEnd = () => {

+ 5
- 0
app/javascript/mastodon/main.js View File

@ -26,6 +26,11 @@ function main() {
ReactDOM.render(<Mastodon {...props} />, mountNode);
perf.stop('main()');
// remember the initial URL
if (window.history && typeof window._mastoInitialHistoryLen === 'undefined') {
window._mastoInitialHistoryLen = window.history.length;
}
});
}

Loading…
Cancel
Save