Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit fa7ca8b

Browse files
authored
DEV: Use the new more-topics API (#885)
See: discourse/discourse#29143
1 parent 772ee93 commit fa7ca8b

File tree

4 files changed

+71
-88
lines changed

4 files changed

+71
-88
lines changed

assets/javascripts/discourse/connectors/topic-more-content/related-topics.hbs

Lines changed: 0 additions & 15 deletions
This file was deleted.

assets/javascripts/discourse/connectors/topic-more-content/related-topics.js

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import { cached, tracked } from "@glimmer/tracking";
2+
import BasicTopicList from "discourse/components/basic-topic-list";
3+
import { withPluginApi } from "discourse/lib/plugin-api";
4+
import i18n from "discourse-common/helpers/i18n";
5+
6+
const RelatedTopics = <template>
7+
<div
8+
role="complementary"
9+
aria-labelledby="related-topics-title"
10+
id="related-topics"
11+
class="more-topics__list"
12+
>
13+
<h3 id="related-topics-title" class="more-topics__list-title">
14+
{{i18n "discourse_ai.related_topics.title"}}
15+
</h3>
16+
<div class="topics">
17+
<BasicTopicList @topics={{@topic.relatedTopics}} />
18+
</div>
19+
</div>
20+
</template>;
21+
22+
export default {
23+
name: "discourse-ai-related-topics",
24+
25+
initialize(container) {
26+
const settings = container.lookup("service:site-settings");
27+
28+
if (
29+
!settings.ai_embeddings_enabled ||
30+
!settings.ai_embeddings_semantic_related_topics_enabled
31+
) {
32+
return;
33+
}
34+
35+
withPluginApi("1.37.2", (api) => {
36+
api.registerMoreTopicsTab({
37+
id: "related-topics",
38+
name: i18n("discourse_ai.related_topics.pill"),
39+
icon: "discourse-sparkles",
40+
component: RelatedTopics,
41+
condition: ({ topic }) => topic.relatedTopics?.length,
42+
});
43+
44+
api.modifyClass(
45+
"model:topic",
46+
(Superclass) =>
47+
class extends Superclass {
48+
@tracked related_topics;
49+
50+
@cached
51+
get relatedTopics() {
52+
return this.related_topics?.map((topic) =>
53+
this.store.createRecord("topic", topic)
54+
);
55+
}
56+
}
57+
);
58+
59+
api.modifyClass(
60+
"model:post-stream",
61+
(Superclass) =>
62+
class extends Superclass {
63+
_setSuggestedTopics(result) {
64+
super._setSuggestedTopics(...arguments);
65+
this.topic.related_topics = result.related_topics;
66+
}
67+
}
68+
);
69+
});
70+
},
71+
};

assets/javascripts/initializers/related-topics.js

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)