Fix back button to never go to a different website using history len check
This commit is contained in:
parent
fd67e58c82
commit
0be888ca96
4 changed files with 23 additions and 6 deletions
|
@ -9,8 +9,12 @@ export default class ColumnBackButton extends React.PureComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
handleClick = () => {
|
handleClick = () => {
|
||||||
if (window.history && window.history.length === 1) this.context.router.history.push('/');
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
else this.context.router.history.goBack();
|
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
||||||
|
this.context.router.history.push('/');
|
||||||
|
} else {
|
||||||
|
this.context.router.history.goBack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
|
|
|
@ -9,8 +9,12 @@ export default class ColumnBackButtonSlim extends React.PureComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
handleClick = () => {
|
handleClick = () => {
|
||||||
if (window.history && window.history.length === 1) this.context.router.history.push('/');
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
else this.context.router.history.goBack();
|
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
||||||
|
this.context.router.history.push('/');
|
||||||
|
} else {
|
||||||
|
this.context.router.history.goBack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
|
|
|
@ -45,8 +45,12 @@ export default class ColumnHeader extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleBackClick = () => {
|
handleBackClick = () => {
|
||||||
if (window.history && window.history.length === 1) this.context.router.history.push('/');
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
else this.context.router.history.goBack();
|
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
||||||
|
this.context.router.history.push('/');
|
||||||
|
} else {
|
||||||
|
this.context.router.history.goBack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleTransitionEnd = () => {
|
handleTransitionEnd = () => {
|
||||||
|
|
|
@ -26,6 +26,11 @@ function main() {
|
||||||
|
|
||||||
ReactDOM.render(<Mastodon {...props} />, mountNode);
|
ReactDOM.render(<Mastodon {...props} />, mountNode);
|
||||||
perf.stop('main()');
|
perf.stop('main()');
|
||||||
|
|
||||||
|
// remember the initial URL
|
||||||
|
if (window.history && typeof window._mastoInitialHistoryLen === 'undefined') {
|
||||||
|
window._mastoInitialHistoryLen = window.history.length;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue