FIX: Don't overwrite Topic.category computed prop (#18)
Pre-loading/pre-assigning isn't necessary. `Topic.category` uses `Category.findById` which in turn uses an identity map, so there are no N+1 calls to the backend.
This commit is contained in:
parent
23ed78cc87
commit
019591c995
|
@ -1,22 +1,9 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
import Category from "discourse/models/category";
|
|
||||||
import { on } from "discourse-common/utils/decorators";
|
import { on } from "discourse-common/utils/decorators";
|
||||||
import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
|
import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
|
||||||
import { getOwner } from "@ember/application";
|
import { getOwner } from "@ember/application";
|
||||||
|
|
||||||
function mergeCategories(results) {
|
|
||||||
const categories = Category.list();
|
|
||||||
const topics = results.topics.topic_list.topics.map((t) => {
|
|
||||||
t.category = categories.findBy("id", t.category_id);
|
|
||||||
return t;
|
|
||||||
});
|
|
||||||
|
|
||||||
results.topics.topic_list.topics = topics;
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
queryParams: {
|
queryParams: {
|
||||||
ascending: "ascending",
|
ascending: "ascending",
|
||||||
|
@ -184,7 +171,6 @@ export default Controller.extend({
|
||||||
this.set("isLoadingMore", true);
|
this.set("isLoadingMore", true);
|
||||||
|
|
||||||
KnowledgeExplorer.loadMore(this.loadMoreUrl).then((result) => {
|
KnowledgeExplorer.loadMore(this.loadMoreUrl).then((result) => {
|
||||||
result = mergeCategories(result);
|
|
||||||
const topics = this.topics.concat(result.topics.topic_list.topics);
|
const topics = this.topics.concat(result.topics.topic_list.topics);
|
||||||
|
|
||||||
this.setProperties({
|
this.setProperties({
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import Route from "@ember/routing/route";
|
import Route from "@ember/routing/route";
|
||||||
import Category from "discourse/models/category";
|
|
||||||
import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
|
import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
|
@ -24,17 +23,6 @@ export default Route.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
setupController(controller, model) {
|
setupController(controller, model) {
|
||||||
const categories = Category.list();
|
|
||||||
|
|
||||||
let topics = model.topics.topic_list.topics;
|
|
||||||
|
|
||||||
topics = topics.map((t) => {
|
|
||||||
t.category = categories.findBy("id", t.category_id);
|
|
||||||
return t;
|
|
||||||
});
|
|
||||||
|
|
||||||
model.topics.topic_list.topics = topics;
|
|
||||||
|
|
||||||
controller.set("topic", model.topic);
|
controller.set("topic", model.topic);
|
||||||
controller.set("model", model);
|
controller.set("model", model);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue