Errore nella pagina inviti - "Cannot read properties of undefined (reading 'slice')"

Nell’ultima versione stabile, vedo un errore JavaScript quando faccio clic sul pulsante “Crea link di invito” in /u/user_name/invited/pending.

La console mostra:

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

Se l’oggetto di invito viene renderizzato prima che invite_key venga popolato dal server, invite_key è indefinito e si verifica un crash quando si utilizza .slice() su nulla.

In invite.js, la funzione shortKey tenta di accorciare una chiave di invito:

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

Non riesco a riprodurlo su meta, quindi forse lo vedo perché il mio server o la mia rete non sono così veloci. Ma verificare se la chiave esiste prima di utilizzarla sembra risolverlo:

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

Per una correzione semplice, è meglio pubblicare qui o aprire una PR?

Invite key non è nullable però:

E questo sta iterando su model.invites:

Ho dato un’occhiata al codice e non sono sicuro da dove possa provenire un codice parzialmente popolato, anche quando ho aggiunto un ritardo di 400 ms sulla rete qui non riesco a riprodurlo.

Penso che abbiamo bisogno di una sorta di riproduzione qui prima di applicare la patch, quella patch finisce per permettere alle persone di copiare un link di invito non funzionante.

Grazie per averci dato un’occhiata e per averlo fatto notare.

Mettere il ritardo in before_create dovrebbe esporlo.

L’ho aggiornato 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>Generazione link...</em>
+ {{/if}}
{{/if}}

Penso che questo andrebbe bene come PR a condizione che sia localizzato.

Sono ancora un po’ confuso su dove stiamo popolando Invite con un oggetto semi-pieno, ma è meglio che fallire e mi sembra corretto.

Vedi questo errore qui su Meta? Mi chiedo se sia stato risolto su latest. In tal caso, dobbiamo solo identificare il commit che lo ha risolto ed eseguirne il backport alla versione stabile.

L’invito viene aggiunto all’elenco immediatamente dopo save() ma prima che invite_key venga popolato dal server. È ancora presente in latest, quindi ho aperto PR #35679

1 Mi Piace