ユーザー設定「新規ユーザー向けオンボーディングのヒントとバッジをスキップする」を変更するとMessage Busが失敗する

再現手順

  1. meta.discourse.org/my/preferences/interface にアクセスします。

  2. ブラウザのコンソールを開きます。

  3. 「Skip new user onboarding tips and badges」を切り替えて「保存」をクリックします。

コンソールにエラーが表示されます。

MESSAGE BUS FAIL: callback /user-tips/2770 caused exception onMessage/<@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4216:653
onMessage@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4216:597
U.prototype._run@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4446:94
U.prototype._join@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4445:256
U.prototype.join@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4408:13
p@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:2570:63
m/<@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:2573:8
b@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:833:7
w@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:833:274
P@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:846:6
r</k/onProgressListener/t.onprogress@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:849:163
EventHandlerNonNull*onProgressListener@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:849:44
xhr@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:850:27
send@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:468:67
ajax@https://d11a6trkgmumsb.cloudfront.net/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:448:12
l@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4065:10
initialize/n.ajax@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4069:531
k@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:848:66
n@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:857:25
r</start/e.onVisibilityChange@https://d11a6trkgmumsb.cloudfront.net/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:858:166
callback@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4067:192
d@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:5743:26
p@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:5743:92
m@https://d11a6trkgmumsb.cloudfront.net/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:5743:129

トグルはエラーにもかかわらず正常に機能しているように見えるため、実際の問題かどうかは不明です。

「いいね!」 6

this.site.user_tips を事前にチェックするのは良い考えかもしれません。:smile:

  if (this.site.user_tips) {
    (seenUserTips || []).forEach((userTipId) => {
      this.currentUser.hideUserTipForever(
        Object.keys(this.site.user_tips).find(
          (id) => this.site.user_tips[id] === userTipId
        )
      );
    });
  }

MessageBus は保存が完了した後に送信されると思います。そのため、機能するのだと思います。害はなく、実際の問題にはならないはずです。

「いいね!」 3

技術的には、それは常に設定されているはずです。ユーザーがページを訪問し、管理者が後でユーザーヒントを有効にした場合にのみ解除されます。このため、サイト設定に refresh: true を設定する方が良い解決策だと考えます。いずれにしても、あなたの解決策はより多くの保護を追加し、サイト設定が変更されてからページがリロードされるまでの間のギャップを埋めると考えています。

ご関心をお寄せいただきありがとうございます!修正はこちらです。

「いいね!」 3