Estoy intentando inyectar el nombre completo de un usuario en la plantilla Handlebars del tema destacado. No tengo problemas para insertar un valor de prueba en la plantilla, pero no logro obtener el valor que deseo. En el código a continuación, idealmente devolvería realname con el nombre completo del usuario como valor en lugar de “Test”:
<script type="text/discourse-plugin" version="0.8">
var FeaturedTopicView = require('discourse/components/featured-topic').default;
FeaturedTopicView.reopen({
fullName: function() {
// Obtener el nombre de usuario del último publicador
let username = this.topic.last_poster.username;
// Intentar obtener el nombre completo del usuario con el nombre de usuario establecido anteriormente
let realname = Discourse.User.findByUsername(username).then(function(result) {
return result.name;
}).then(function(result) {
// ¡Esto nos da los nombres reales! Pero es inaccesible fuera de aquí
console.log(result);
});
return "Test";
}.property()
});
</script>
El usuario que me interesa es el último publicador, por lo que en este caso parece que todo lo que tengo para trabajar es this.topic.last_poster. Esto tiene tres valores asociados: username, id y avatar_template. Lamentablemente, lo que realmente necesito es name.
Esperaba que hubiera algo que me permitiera buscar el nombre completo de un usuario usando id o username. No estoy muy familiarizado con el concepto de promesas y cómo usarlas, pero de alguna manera demostré un concepto usando Discourse.User.findByUsername(username). Puedo registrar correctamente con console.log los nombres completos que necesito, pero parecen estar atrapados en ese ámbito.
Podría estar abordando todo esto de la manera incorrecta, pero este fue mi mejor esfuerzo basado en mi conocimiento actual.
¡Cualquier ayuda o sugerencia sería muy apreciada! Por favor, hágame saber si necesito aclarar algo.