DEV: Update tag-show route to native class syntax (#23701)

This commit is contained in:
David Taylor 2023-09-28 17:10:07 +01:00 committed by GitHub
parent 9136109ca0
commit 0ec3cc4eb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 32 deletions

View File

@ -1,6 +1,6 @@
import DiscoverySortableController from "discourse/controllers/discovery-sortable";
import Site from "discourse/models/site";
import TagShowRoute from "discourse/routes/tag-show";
import { buildTagRoute } from "discourse/routes/tag-show";
import buildCategoryRoute from "discourse/routes/build-category-route";
import buildTopicRoute from "discourse/routes/build-topic-route";
import { dasherize } from "@ember/string";
@ -66,16 +66,16 @@ export default {
);
});
app.register("route:tags.show-category", TagShowRoute.extend());
app.register("route:tags.show-category", buildTagRoute());
app.register(
"route:tags.show-category-none",
TagShowRoute.extend({
buildTagRoute({
noSubcategories: true,
})
);
app.register(
"route:tags.show-category-all",
TagShowRoute.extend({
buildTagRoute({
noSubcategories: false,
})
);
@ -85,21 +85,21 @@ export default {
app.register(
`route:tag.show-${filterDasherized}`,
TagShowRoute.extend({
buildTagRoute({
navMode: filter,
})
);
app.register(
`route:tags.show-category-${filterDasherized}`,
TagShowRoute.extend({ navMode: filter })
buildTagRoute({ navMode: filter })
);
app.register(
`route:tags.show-category-none-${filterDasherized}`,
TagShowRoute.extend({ navMode: filter, noSubcategories: true })
buildTagRoute({ navMode: filter, noSubcategories: true })
);
app.register(
`route:tags.show-category-all-${filterDasherized}`,
TagShowRoute.extend({ navMode: filter, noSubcategories: false })
buildTagRoute({ navMode: filter, noSubcategories: false })
);
});
},

View File

@ -1,3 +1,4 @@
import { inject as service } from "@ember/service";
import {
filterQueryParams,
findTopicList,
@ -17,21 +18,27 @@ import { setTopicList } from "discourse/lib/topic-list-tracker";
import showModal from "discourse/lib/show-modal";
import { action } from "@ember/object";
import PreloadStore from "discourse/lib/preload-store";
import { inject as service } from "@ember/service";
const NONE = "none";
const ALL = "all";
export default DiscourseRoute.extend({
composer: service(),
router: service(),
currentUser: service(),
navMode: "latest",
export default class TagShowRoute extends DiscourseRoute {
@service composer;
@service router;
@service currentUser;
queryParams,
queryParams = queryParams;
controllerName = "tag.show";
templateName = "tag.show";
routeConfig = {};
controllerName: "tag.show",
templateName: "tag.show",
get navMode() {
return this.routeConfig.navMode || "latest";
}
get noSubcategories() {
return this.routeConfig.noSubcategories;
}
beforeModel() {
const controller = this.controllerFor("tag.show");
@ -39,7 +46,7 @@ export default DiscourseRoute.extend({
loading: true,
showInfo: false,
});
},
}
async model(params, transition) {
const tag = this.store.createRecord("tag", {
@ -138,7 +145,7 @@ export default DiscourseRoute.extend({
canCreateTopicOnCategory: category?.permission === PermissionType.FULL,
canCreateTopicOnTag: !tag.staff || this.currentUser?.staff,
};
},
}
setupController(controller, model) {
const noSubcategories = this.noSubcategories;
@ -166,7 +173,7 @@ export default DiscourseRoute.extend({
} else {
this.searchService.searchContext = model.tag.searchContext;
}
},
}
titleToken() {
const filterText = I18n.t(
@ -199,17 +206,17 @@ export default DiscourseRoute.extend({
});
}
}
},
}
deactivate() {
this._super(...arguments);
super.deactivate(...arguments);
this.searchService.searchContext = null;
},
}
@action
renameTag(tag) {
showModal("rename-tag", { model: tag });
},
}
@action
createTopic() {
@ -231,13 +238,13 @@ export default DiscourseRoute.extend({
}
});
}
},
}
@action
dismissReadTopics(dismissTopics) {
const operationType = dismissTopics ? "topics" : "posts";
this.send("dismissRead", operationType);
},
}
@action
dismissRead(operationType) {
@ -256,16 +263,22 @@ export default DiscourseRoute.extend({
}
controller.send("dismissRead", operationType, options);
},
}
@action
resetParams(skipParams = []) {
resetParams.call(this, skipParams);
},
}
_controllerTags(controller) {
return [controller.get("model.id"), ...makeArray(controller.additionalTags)]
.filter(Boolean)
.filter((tag) => ![NONE, ALL].includes(tag));
},
});
}
}
export function buildTagRoute(routeConfig = {}) {
return class extends TagShowRoute {
routeConfig = routeConfig;
};
}

View File

@ -1,6 +1,6 @@
import TagShowRoute from "discourse/routes/tag-show";
import { buildTagRoute } from "discourse/routes/tag-show";
export default TagShowRoute.extend({});
export default buildTagRoute();
// The tags-intersection route is exactly the same as the tags-show route, but the wildcard at the
// end of the route (*additional_tags) will cause a match when query parameters are present,