Creo que esto podría ser un error en Discourse, pero no estoy seguro. Quizás estoy haciendo algo mal.
Tengo un plugin que añade información al conector user-card-post-names.
Handlebars:
Javascript:
Eso a su vez llama a este Javascript que hace la mayor parte del trabajo:
Detalles del problema:
Dentro del código JS anterior están estas dos líneas:
var version = userModel.custom_fields && userModel.custom_fields["directoryopus_link_version"];
var edition = userModel.custom_fields && userModel.custom_fields["directoryopus_link_edition"];
Luego hace una prueba if (version || edition) { ... y genera algunas cadenas (opusLinkClass, opusLinkIcon, opusLinkText) dependiendo del resultado, que luego almacena:
component.set("opusLinkClass", opusLinkClass);
component.set("opusLinkIcon", opusLinkIcon);
component.set("opusLinkText", opusLinkText);
Esas cadenas se utilizan luego en el archivo handlebars al principio de esta publicación.
Nunca hay errores ni advertencias en la ventana de registro del navegador, pero a veces esto sale mal.
Estoy probando con una cuenta que tiene ambos custom_fields establecidos, por lo que la prueba if (version || edition) siempre debería ir por la primera rama, no por la else if (!viewingStaff) debajo de ella.
Sin embargo, a veces va por la segunda rama, lo que significa que version y edition no se establecieron.
Esto no suele suceder, por eso creo que podría ser un error en Discourse.
Parece que solo sale mal si creo un nuevo hilo y luego respondo a él, o si edito una respuesta que acabo de hacer. Es como si el objeto userModel no se inicializara correctamente cuando se ejecuta el conector en algunas situaciones, ¿quizás debido a una condición de carrera en algún lugar?
Parece que solo sale mal una vez por hilo. Si actualizo la página con F5, todo vuelve a estar bien y sigue estando bien para ese hilo. (Al menos hasta donde puedo decir. Parece semi-aleatorio, así que es posible que simplemente no lo haya vuelto a ver suceder para el mismo hilo).
Gracias por su tiempo y cualquier sugerencia.