diff --git a/ghost/admin/app/routes/posts.js b/ghost/admin/app/routes/posts.js index 1cd22a9e14..6bf36641ff 100644 --- a/ghost/admin/app/routes/posts.js +++ b/ghost/admin/app/routes/posts.js @@ -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 = {};