Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/discourse-plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ on:
jobs:
ci:
uses: discourse/.github/.github/workflows/discourse-plugin.yml@v1
with:
core_ref: 0-a-more-topics-api

This file was deleted.

This file was deleted.

71 changes: 71 additions & 0 deletions assets/javascripts/initializers/related-topics.gjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { cached, tracked } from "@glimmer/tracking";
import BasicTopicList from "discourse/components/basic-topic-list";
import { withPluginApi } from "discourse/lib/plugin-api";
import i18n from "discourse-common/helpers/i18n";

const RelatedTopics = <template>
<div
role="complementary"
aria-labelledby="related-topics-title"
id="related-topics"
class="more-topics__list"
>
<h3 id="related-topics-title" class="more-topics__list-title">
{{i18n "discourse_ai.related_topics.title"}}
</h3>
<div class="topics">
<BasicTopicList @topics={{@topic.relatedTopics}} />
</div>
</div>
</template>;

export default {
name: "discourse-ai-related-topics",

initialize(container) {
const settings = container.lookup("service:site-settings");

if (
!settings.ai_embeddings_enabled ||
!settings.ai_embeddings_semantic_related_topics_enabled
) {
return;
}

withPluginApi("1.37.2", (api) => {
api.registerMoreTopicsTab({
id: "related-topics",
name: i18n("discourse_ai.related_topics.pill"),
icon: "discourse-sparkles",
component: RelatedTopics,
condition: ({ topic }) => topic.relatedTopics?.length,
});

api.modifyClass(
"model:topic",
(Superclass) =>
class extends Superclass {
@tracked related_topics;

@cached
get relatedTopics() {
return this.related_topics?.map((topic) =>
this.store.createRecord("topic", topic)
);
}
}
);

api.modifyClass(
"model:post-stream",
(Superclass) =>
class extends Superclass {
_setSuggestedTopics(result) {
super._setSuggestedTopics(...arguments);
this.topic.related_topics = result.related_topics;
}
}
);
});
},
};
32 changes: 0 additions & 32 deletions assets/javascripts/initializers/related-topics.js

This file was deleted.