Je pense qu’il pourrait s’agir d’un bug dans Discourse, mais je ne suis pas sûr. Peut-être que je fais quelque chose de mal.
J’ai un plugin qui ajoute des informations au connecteur user-card-post-names.
Handlebars :
Javascript :
Qui à son tour appelle ce Javascript qui fait la majeure partie du travail :
Détails du problème :
Dans le code JS précédent se trouvent ces deux lignes :
var version = userModel.custom_fields && userModel.custom_fields["directoryopus_link_version"];
var edition = userModel.custom_fields && userModel.custom_fields["directoryopus_link_edition"];
Il effectue ensuite un test if (version || edition) { ... et génère des chaînes (opusLinkClass, opusLinkIcon, opusLinkText) en fonction du résultat, qu’il stocke ensuite :
component.set("opusLinkClass", opusLinkClass);
component.set("opusLinkIcon", opusLinkIcon);
component.set("opusLinkText", opusLinkText);
Ces chaînes sont ensuite utilisées dans le fichier handlebars au début de ce message.
Il n’y a jamais d’erreurs ou d’avertissements dans la fenêtre du journal du navigateur, mais cela échoue parfois.
Je teste avec un compte qui a les deux custom_fields définis, donc le test if (version || edition) devrait toujours emprunter la première branche, pas le else if (!viewingStaff) en dessous.
Pourtant, il emprunte parfois la deuxième branche, ce qui signifie que version et edition n’étaient pas définis.
Cela n’arrive généralement pas, c’est pourquoi je pense qu’il pourrait s’agir d’un bug dans Discourse.
Cela ne semble se produire que si je crée un nouveau fil de discussion, puis que j’y réponds, ou si je modifie une réponse que je viens de faire. C’est comme si l’objet userModel n’était pas initialisé correctement lorsque le connecteur est exécuté dans certaines situations, peut-être en raison d’une condition de concurrence quelque part ?
Cela ne semble se produire qu’une seule fois par fil de discussion. Si je rafraîchis la page avec F5, tout va bien à nouveau, et continue de bien fonctionner pour ce fil de discussion. (Du moins, autant que je puisse en juger. Cela semble semi-aléatoire, il est donc possible que je ne l’aie pas vu se reproduire pour le même fil de discussion.)
Merci pour votre temps et pour toute suggestion.