JavaScript/プラグインAPI経由でカスタムユーザーフィールドにアクセスする

こんにちは。Our solution for blurring NSFW content - #5 by bartv を実装しようとしたのですが、残念ながらコードが機能しなくなりました。
行き詰まってしまい、Discourse JavaScript API全般や、カスタムユーザーフィールドの取得方法に関するドキュメントを見つけることができませんでした。

リンクされたコードスニペットをサイトのテーマのheader.htmlセクションに追加してみました。
JavaScriptでアクセス可能なオブジェクト const user = api.getCurrentUser(); には、参照されている投稿にある user_fields ではなく、custom_fields というプロパティが含まれているようです。

しかし、それは空であるか、または適切にクエリ/入力する方法がわかりません。このデータにアクセスするには、実際のRubyプラグインが必要になるような気がします。

この問題について、または同じ機能を再び機能させる方法について、どのような助けでもいただけると大変助かります。
必要な機能は、カスタムユーザーフィールドに応じてbodyにカスタムcssクラスを追加することです。

お読みいただきありがとうございます o/

ユーザープロフィールの.json出力を確認すると、user_fields レコードが表示されます(https://meta.discourse.org/u/pfaffman.json のようなものですが、ここにはカスタムフィールドはありません)。そこに、UXで追加したユーザーフィールドがあります(実際には、それらは user_custom_field の一種です。user_custom_fields は、トピックストリームのユーザーレコードにはないようです。以前は存在したが現在は削除されたのか(これはバグの可能性があります)はわかりません。ユーザーフィールドがそれらの設定(ユーザーカードに表示するなど)で表示されることを確認する必要があります。

現在見ている限りでは、カスタムフィールドをシリアライザーに追加するプラグインを作成する必要があります。

カスタムユーザーフィールドの代わりにグループを使用できれば、問題を解決できるかもしれません。

「いいね!」 2

ユーザーフィールドは、UXで追加する場所です(実際には一種の user_custom_field です)。

なるほど、それで変数名がそうなっているのですね。ありがとうございます。

/u/user.json エンドポイントは、公開されているため、公開フィールドのみを公開していると思います。この問題の性質上、人々がユーザーカードでNSFW設定を公開したいとは思いにくいです。したがって、まずグループを回避策として使用することを検討します :smiley:

「いいね!」 2