Erreur sur la page des invitations - « Impossible de lire les propriétés de undefined (lecture de 'slice') »

Sur la dernière version stable, je vois une erreur JavaScript lorsque je clique sur le bouton « Créer un lien d’invitation » sur /u/user_name/invited/pending.

La console affiche :

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

Si l’objet d’invitation est rendu avant que invite_key ne soit rempli par le serveur, invite_key est indéfini et cela plante lors de l’utilisation de .slice() sur rien.

Dans invite.js, la fonction shortKey essaie de raccourcir une clé d’invitation :

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

Je ne peux pas le reproduire sur meta, donc peut-être que je le vois parce que mon serveur ou mon réseau n’est pas aussi rapide. Mais vérifier si la clé existe avant de l’utiliser semble le résoudre :

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

Pour une correction simple, est-il préférable de poster ici ou d’ouvrir une PR ?

La clé d’invitation n’est pas nullable :

Et ceci itère sur model.invites :

J’ai examiné le code et je ne suis pas sûr d’où peut provenir un code partiellement rempli, même en ajoutant un délai de 400 ms sur le réseau ici, je ne peux pas le reproduire.

Je pense que nous avons besoin d’une sorte de reproduction avant de patcher, ce patch permettrait aux gens de copier un lien d’invitation cassé.

Merci d’avoir examiné la question et d’avoir signalé cela.

Placer le délai avant la création devrait le rendre accessible.

Je l’ai mis à jour pour :

{{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>Génération du lien...</em>
+ {{/if}}
{{/if}}

Je pense que ce serait bien en tant que PR à condition qu’il soit localisé.

Toujours un peu confus quant à l’endroit où nous remplissons Invite avec un objet à moitié plein, mais c’est mieux que d’échouer et cela me semble correct.

Voyez-vous cette erreur ici sur Meta ? Je me demande si elle a été corrigée sur latest. Dans ce cas, il nous suffit d’identifier le commit qui l’a corrigée et de la rétroporter vers la version stable.

L’invitation est ajoutée à la liste immédiatement après save() mais avant que invite_key ne soit remplie par le serveur. Elle est toujours présente dans latest, j’ai donc ouvert PR #35679

1 « J'aime »