J’essaie d’injecter le nom complet d’un utilisateur dans le modèle Handlebars du sujet mis en avant. Je n’ai aucun problème à insérer une valeur de test dans le modèle, mais je n’arrive pas à obtenir la valeur que je souhaite. Dans le code ci-dessous, j’aimerais idéalement que realname renvoie le nom complet de l’utilisateur à la place de « Test » :
<script type="text/discourse-plugin" version="0.8">
var FeaturedTopicView = require('discourse/components/featured-topic').default;
FeaturedTopicView.reopen({
fullName: function() {
// Récupérer le nom d'utilisateur du dernier poster
let username = this.topic.last_poster.username;
// Essayer d'obtenir le nom complet de l'utilisateur avec le nom d'utilisateur établi ci-dessus
let realname = Discourse.User.findByUsername(username).then(function(result) {
return result.name;
}).then(function(result) {
// Cela nous donne les vrais noms ! Mais ils sont inaccessibles en dehors de ce bloc
console.log(result);
});
return "Test";
}.property()
});
</script>
L’utilisateur qui m’intéresse est le dernier poster, donc dans ce cas, il semble que je n’aie à ma disposition que this.topic.last_poster. Cela a trois valeurs associées : username, id et avatar_template. Malheureusement, ce dont j’ai vraiment besoin, c’est de name.
J’espérais qu’il y ait un moyen de rechercher le nom complet d’un utilisateur en utilisant id ou username. Je ne suis pas très familier avec le concept de promesses et leur utilisation, mais j’ai réussi à valider un concept en utilisant Discourse.User.findByUsername(username). Je peux correctement console.log les noms complets dont j’ai besoin, mais ils semblent être piégés dans cette portée.
Je pourrais me tromper complètement dans mon approche, mais c’était ma meilleure tentative basée sur mes connaissances actuelles.
Toute aide ou suggestion serait grandement appréciée ! N’hésitez pas à me faire savoir si je dois clarifier quoi que ce soit.