mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 04:03:57 -06:00
FIX: Use history-store service to check isPoppedState()
The old heuristic was 'a transition to a URL (i.e. not a named route) which was not triggered by DiscourseURL'. That logic is flawed now that we're increasingly using Ember's routing methods.
This commit is contained in:
parent
161256eef8
commit
20e562bd99
@ -21,6 +21,7 @@ class AbstractCategoryRoute extends DiscourseRoute {
|
|||||||
@service store;
|
@service store;
|
||||||
@service topicTrackingState;
|
@service topicTrackingState;
|
||||||
@service("search") searchService;
|
@service("search") searchService;
|
||||||
|
@service historyStore;
|
||||||
|
|
||||||
queryParams = queryParams;
|
queryParams = queryParams;
|
||||||
|
|
||||||
@ -86,7 +87,7 @@ class AbstractCategoryRoute extends DiscourseRoute {
|
|||||||
|
|
||||||
async _retrieveTopicList(category, transition, modelParams) {
|
async _retrieveTopicList(category, transition, modelParams) {
|
||||||
const findOpts = filterQueryParams(modelParams, this.routeConfig);
|
const findOpts = filterQueryParams(modelParams, this.routeConfig);
|
||||||
const extras = { cached: this.isPoppedState(transition) };
|
const extras = { cached: this.historyStore.isPoppedState };
|
||||||
|
|
||||||
let listFilter = `c/${Category.slugFor(category)}/${category.id}`;
|
let listFilter = `c/${Category.slugFor(category)}/${category.id}`;
|
||||||
if (findOpts.no_subcategories) {
|
if (findOpts.no_subcategories) {
|
||||||
|
@ -98,17 +98,18 @@ class AbstractTopicRoute extends DiscourseRoute {
|
|||||||
@service store;
|
@service store;
|
||||||
@service topicTrackingState;
|
@service topicTrackingState;
|
||||||
@service currentUser;
|
@service currentUser;
|
||||||
|
@service historyStore;
|
||||||
|
|
||||||
queryParams = queryParams;
|
queryParams = queryParams;
|
||||||
templateName = "discovery/list";
|
templateName = "discovery/list";
|
||||||
controllerName = "discovery/list";
|
controllerName = "discovery/list";
|
||||||
|
|
||||||
async model(data, transition) {
|
async model(data) {
|
||||||
// attempt to stop early cause we need this to be called before .sync
|
// attempt to stop early cause we need this to be called before .sync
|
||||||
this.screenTrack.stop();
|
this.screenTrack.stop();
|
||||||
|
|
||||||
const findOpts = filterQueryParams(data),
|
const findOpts = filterQueryParams(data),
|
||||||
findExtras = { cached: this.isPoppedState(transition) };
|
findExtras = { cached: this.historyStore.isPoppedState };
|
||||||
|
|
||||||
const topicListPromise = findTopicList(
|
const topicListPromise = findTopicList(
|
||||||
this.store,
|
this.store,
|
||||||
|
@ -65,13 +65,6 @@ const DiscourseRoute = Route.extend({
|
|||||||
|
|
||||||
return user.id === this.currentUser.id;
|
return user.id === this.currentUser.id;
|
||||||
},
|
},
|
||||||
|
|
||||||
isPoppedState(transition) {
|
|
||||||
return (
|
|
||||||
!transition._discourse_intercepted &&
|
|
||||||
(!!transition.intent.url || !!transition.queryParamsOnly)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default DiscourseRoute;
|
export default DiscourseRoute;
|
||||||
|
@ -26,6 +26,7 @@ export default class TagShowRoute extends DiscourseRoute {
|
|||||||
@service store;
|
@service store;
|
||||||
@service topicTrackingState;
|
@service topicTrackingState;
|
||||||
@service("search") searchService;
|
@service("search") searchService;
|
||||||
|
@service historyStore;
|
||||||
|
|
||||||
queryParams = queryParams;
|
queryParams = queryParams;
|
||||||
controllerName = "discovery/list";
|
controllerName = "discovery/list";
|
||||||
@ -119,7 +120,7 @@ export default class TagShowRoute extends DiscourseRoute {
|
|||||||
filter,
|
filter,
|
||||||
filteredQueryParams,
|
filteredQueryParams,
|
||||||
{
|
{
|
||||||
cached: this.isPoppedState(transition),
|
cached: this.historyStore.isPoppedState,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { action } from "@ember/object";
|
import { action } from "@ember/object";
|
||||||
|
import { inject as service } from "@ember/service";
|
||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
import { Promise } from "rsvp";
|
import { Promise } from "rsvp";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
@ -6,6 +7,7 @@ import DiscourseRoute from "discourse/routes/discourse";
|
|||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
export default DiscourseRoute.extend({
|
export default DiscourseRoute.extend({
|
||||||
|
historyStore: service(),
|
||||||
templateName: "user/bookmarks",
|
templateName: "user/bookmarks",
|
||||||
|
|
||||||
queryParams: {
|
queryParams: {
|
||||||
@ -13,11 +15,11 @@ export default DiscourseRoute.extend({
|
|||||||
q: { refreshModel: true },
|
q: { refreshModel: true },
|
||||||
},
|
},
|
||||||
|
|
||||||
model(params, transition) {
|
model(params) {
|
||||||
const controller = this.controllerFor("user-activity-bookmarks");
|
const controller = this.controllerFor("user-activity-bookmarks");
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this.isPoppedState(transition) &&
|
this.historyStore.isPoppedState &&
|
||||||
this.session.bookmarksModel &&
|
this.session.bookmarksModel &&
|
||||||
this.session.bookmarksModel.searchTerm === params.q
|
this.session.bookmarksModel.searchTerm === params.q
|
||||||
) {
|
) {
|
||||||
|
Loading…
Reference in New Issue
Block a user