Error en la página de invitaciones - "Cannot read properties of undefined (reading 'slice')"

En la última versión estable, veo un error de JavaScript cuando hago clic en el botón “Crear enlace de invitación” en /u/user_name/invited/pending.

La consola muestra:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘slice’) at h.shortKey (chunk.f105ceace2ad381ddb2f.d41d8cd9.js:241:61588)

Si el objeto de invitación se renderiza antes de que invite_key se complete desde el servidor, invite_key es indefinido y falla al usar .slice() en nada.

En invite.js, la función shortKey intenta acortar una clave de invitación:

shortKey(key) {
return key.slice(0, 4) + “…”;
}

No puedo reproducirlo en meta, así que tal vez lo veo porque mi servidor o red no son tan rápidos. Pero verificar si la clave existe antes de usarla parece resolverlo:

return key ? key.slice(0, 4) + “…” : “”;\n```

Para una solución sencilla, ¿es mejor publicar aquí o abrir una PR?

La clave de invitación no es anulable, sin embargo:

Y esto está iterando a través de model.invites:

He mirado el código y no estoy seguro de dónde puede provenir un código parcialmente poblado, incluso cuando añadí un retraso de 400 ms en la red aquí no puedo reproducirlo.

Creo que necesitamos algún tipo de reproducción aquí antes de aplicar el parche, ya que ese parche permite a las personas copiar un enlace de invitación roto.

Gracias por investigarlo y señalarlo.

Poner el retraso en before_create debería exponerlo.

Lo actualicé a:

{{else}}
  {{icon "link"}}
+ {{#if invite.invite_key}}
    {{i18n
      "user.invited.invited_via_link"
      key=invite.shortKey
      count=invite.redemption_count
      max=invite.max_redemptions_allowed
    }}
+ {{else}}
+   <em>Generando enlace...</em>
+ {{/if}}
{{/if}}

Creo que esto estaría bien como una PR siempre que se localice.

Todavía estoy un poco confundido sobre dónde estamos poblando Invite con un objeto medio lleno, pero es mejor que fallar y me parece correcto.

¿Ves este error aquí en Meta? Me pregunto si se ha corregido en latest. En ese caso, solo necesitamos identificar el commit que lo corrigió y transferirlo a estable.

La invitación se agrega a la lista inmediatamente después de save() pero antes de que invite_key sea poblada desde el servidor. Todavía está presente en latest, así que abrí PR #35679

1 me gusta