🐛 Fixed browser back button behaviour after clicking "x posts" on tags screen (#1306)

closes https://github.com/TryGhost/Ghost/issues/11057

- removed static "replace" configuration of posts/pages query params
- used the router service to register a `willTransition` event handler which handles conditional replaceState transition behaviour only when filters are changed whilst already on the posts/pages route
This commit is contained in:
Kevin Ansfield 2019-08-29 11:10:09 +01:00 committed by GitHub
parent 0ba331ec5f
commit 4a11a72ea2

View File

@ -5,30 +5,36 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend({
infinity: service(),
router: service(),
queryParams: {
type: {
refreshModel: true,
replace: true
},
author: {
refreshModel: true,
replace: true
},
tag: {
refreshModel: true,
replace: true
},
order: {
refreshModel: true,
replace: true
}
type: {refreshModel: true},
author: {refreshModel: true},
tag: {refreshModel: true},
order: {refreshModel: true}
},
modelName: 'post',
perPage: 30,
init() {
this._super(...arguments);
// if we're already on this route and we're transiting _to_ this route
// then the filters are being changed and we shouldn't create a new
// browser history entry
// see https://github.com/TryGhost/Ghost/issues/11057
this.router.on('routeWillChange', (transition) => {
if (transition.to && (this.routeName === 'posts' || this.routeName === 'pages')) {
let toThisRoute = transition.to.find(route => route.name === this.routeName);
if (transition.from && transition.from.name === this.routeName && toThisRoute) {
transition.method('replace');
}
}
});
},
model(params) {
return this.session.user.then((user) => {
let queryParams = {};