「새 사용자 온보딩 팁 및 배지 건너뛰기」 사용자 설정을 변경할 때 메시지 버스가 실패합니다

재현 방법

  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://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4216:653
onMessage@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4216:597
U.prototype._run@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4446:94
U.prototype._join@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4445:256
U.prototype.join@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:4408:13
p@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:2570:63
m/<@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:2573:8
b@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:833:7
w@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:833:274
P@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:846:6
r</k/onProgressListener/t.onprogress@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:849:163
EventHandlerNonNull*onProgressListener@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:849:44
xhr@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:850:27
send@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:468:67
ajax@https://global.discourse-cdn.com/meta/assets/vendor-33e08796a908852ea6a675c57d6711f18f2428795ec0f2548e4df9733e003014.br.js:448:12
l@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4065:10
initialize/n.ajax@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4069:531
k@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:848:66
n@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:857:25
r</start/e.onVisibilityChange@https://global.discourse-cdn.com/meta/assets/chunk.703.1bbc722b2533c9d7510a-e77869e990640cdc164a270bdea9a4b9995366c02a371c298741dcb9d72003ca.br.js:858:166
callback@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:4067:192
d@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:5743:26
p@https://global.discourse-cdn.com/meta/assets/discourse-aca223ea4cd01ddb1a6f180395955d62c82cdfd63a0f788938e09aae5af55f55.br.js:5743:92
m@https://global.discourse-cdn.com/meta/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개의 좋아요