Fallo del Message Bus al cambiar la configuración de usuario "Omitir consejos y distintivos de incorporación de nuevos usuarios"

Para reproducir

  1. visita meta.discourse.org/my/preferences/interface

  2. Abre la consola de tu navegador

  3. Activa Saltar consejos y insignias para nuevos usuarios y haz clic en guardar

Verás el error en la consola:

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

El interruptor parece funcionar bien a pesar del error, así que no estoy seguro de si es un problema real.

6 Me gusta

Quizás sea una buena idea comprobar this.site.user_tips antes. :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
        )
      );
    });
  }

Creo que MessageBus se envía después de que se guarda; por eso funciona. No causa daño y no debería ser un problema real.

3 Me gusta

Técnicamente, eso siempre debería estar configurado. Solo se desactiva cuando un usuario visita la página y los administradores habilitan los consejos para el usuario después. Por esta razón, creo que una mejor solución es establecer refresh: true para esa configuración del sitio. De todos modos, creo que tu solución añade más protección y cubre el lapso de tiempo entre que se cambia la configuración del sitio y se actualiza la página.

¡Gracias por tu interés! Aquí está la solución:

3 Me gusta