Userクラスをインポートして、Userを使用する代わりにする

こんにちは、コミュニティの皆様。
コミュニティ内の警告を修正する時間ができました。そのうちの1つは以下の通りです。

非推奨のお知らせ: User クラスをインポートしてください。User の直接使用は非推奨です(Discourse 2.4.0 以降)。Discourse 2.6.0 で削除されます。

DevTools からデバッグを試みましたが、警告の発生源となるファイルにアクセスできません。以下のエラーが表示されます。

URL/assets/var/www/discourse/public/assets/_application-d88a387e24ec4397c59d853355d071080a32aa58498a2ea0a509cebee72839c0.js のコンテンツを読み込めませんでした: HTTP ステータスコード: 404

いずれにせよ、テーマのみを残してセーフモードで起動しました。警告は私のテーマから発生しているようです。テーマ内で HTML ファイルに以下の記述があることに気づきました。

<script type="text/discourse-plugin" version="0.8.13">
api.decorateWidget('header:before', helper => {
  // ... code
  var currentUser = Discourse.User.current();
  // ... code
});
</script>

技術的な質問は以下の通りです。

  1. この行が警告の原因でしょうか?もしそうなら、User をどのようにインポートし、警告を解決すればよいでしょうか?
  2. DevTools から圧縮された JS ファイルをどのようにデバッグすればよいでしょうか?

ご協力ありがとうございます!:slight_smile:

変更

var currentUser = Discourse.User.current();

var currentUser = api.getCurrentUser();

「いいね!」 6

メッセージに書かれているように、何かをインポートする必要はないのでしょうか?

いいえ、API がすでにその機能を提供しています。

「いいね!」 2

素晴らしい!ありがとうございます :slight_smile:
Discourse.Site.currentProp('trustLevels') のように、修正が必要な箇所が他にもあるようです。
古いメソッドの代わりにどのメソッドを使用すべきか理解するための適切なドキュメントはありますか?

私も同じです。Discourse.Site.currentProp('user_fields')こちらを参照)を他の何かと置き換える必要がありますか?

「いいね!」 1

おそらく、このトピックは Support - Discourse Meta のサポートカテゴリに属するべきでしょう。

私も同様の問題に直面しています。最新バージョン(2.6.0.beta3)で「非推奨の通知: User クラスをインポートして、User(Discourse 2.4.0 以降非推奨、Discourse 2.6.0 で削除予定)を使用しないでください」という警告が表示されます。

私のフォーラムは、初めてユーザーがアクセスする際に非常に遅く動作します。

どこから始めればよいか、その値をどのように変更すればよいか、ご教示いただけますか?管理画面から変更するのでしょうか?

よろしくお願いいたします

これらの非推奨に関する通知は、テーマ開発者やプラグイン開発者を対象としています。

「もしこれがどうすればよいかわからないなら、これを行うべきはあなたではありません」

「いいね!」 3

テーマ開発者として、User.current() だけでなくそれ以上のものを使用している場合は、以下に置き換えてください:

const User = require('discourse/model/user').default;
「いいね!」 2