Discourse API 現在のトピックを取得

こんにちは!

Discourse の API スクリプトプラグインで現在のユーザーを取得できることはわかりました:

<script type="text/discourse-plugin" version="0.8.18">
    if(api.getCurrentUser() != null) {
        $("#logged-in-user").text(" " + api.getCurrentUser().username);
    }
</script>

現在のトピックを取得する類似のコマンドはありますか?私のユースケースは、投稿の末尾にあるリダイレクトボタンの URL を、投稿者への事前に記入された PM リンクに変更することです。投稿者のユーザー名を見つけるためには、まずトピック ID を取得し、次に "/t/<TOPIC_ID>.json" を介して投稿者にクエリを実行する必要があるようです。

ボタンプラグインには <TOPIC_ID> が組み込まれていますが、[管理 > カスタマイズ](Admin > Customization) 下の JavaScript でこれをどのように実現できるかよくわかりません。よろしくお願いいたします!

これが最善のアプローチかどうかはわかりませんが、トピック作成者のユーザー名を以下のように取得することは可能です:

const controller = Discourse.__container__.lookup("controller:topic")
const username = controller.get("model.details.created_by.username")

これは <script/> タグ内で直接動作するわけではありません。おそらく api.onPageChange や他のイベントで使用することをお勧めします(簡易テストでは 0ms の setTimeout でも動作しましたが、副作用があるかどうかはわかりません)。

「いいね!」 2